Mysql索引PRIMARY、NORMAL、UNIQUE、FULLTEXT 区别和使用场合

索引  

  数据库的索引就像一本书的目录,能够加快数据库的查询速度。

  MYSQL索引有四种PRIMARY、INDEX、UNIQUE、FULLTEXT, 其中PRIMARY、INDEX、UNIQUE是一类,FULLTEXT是一类。

  这四种都是单列索引,也就是他们都是作用于单个一列,所以也称单列索引;但是一个索引也可以作用于多个列上,称为组合索引或复合索引。

单列索引

  新建一张测试表

CREATE TABLE T_USER( ID INT NOT NULL,USERNAME VARCHAR(16) NOT NULL);

  (1)PRIMARY:主键索引。索引列唯一且不能为空一张表只能有一个主键索引(主键索引通常在建表的时候就指定)

CREATE TABLE T_USER(ID INT NOT NULL,USERNAME VARCHAR(16) NOT NULL,PRIMARY KEY(ID))

  (2)NORMAL:普通索引。索引列没有任何限制;

  • 建表时指定
CREATE TABLE T_USER(ID INT NOT NULL,USERNAME VARCHAR(16) NOT NULL,INDEX USERNAME_INDEX(USERNAME(16))) //给列USERNAME建普通索引USERNAME_INDEX
  • ALTER语句指定
ALTER TABLE T_USER ADD INDEX U_INDEX (USERNAME) //给列USERNAME建普通索引 U_INDEX
  • 删除索引
DROP INDEX U_INDEX ON t_user  //删除表t_user中的索引U_INDEX

(3)UNIQUE:唯一索引。索引列的值必须是唯一的,但允许有空;

  • 建表时指定
CREATE TABLE t_user(ID INT NOT NULL,USERNAME VARCHAR(16) NOT NULL,UNIQUE U_INDEX(USERNAME)) //给列USERNAME添加唯一索引T_USER