PRIMARY, INDEX, UNIQUE 这3种是一类
1.添加PRIMARY KEY(主键索引) 就是 唯一 且 不能为空
ALTER TABLE `table_name` ADD PRIMARY KEY (`column`);
2.添加UNIQUE(唯一索引) 不允许有重复
ALTER TABLE `table_name` ADD UNIQUE (`column`);
3.添加INDEX(普通索引)
ALTER TABLE `table_name` ADD INDEX index_name (`column`);
4.添加FULLTEXT(全文索引) 用于在一篇文章中,检索文本信息的
ALTER TABLE `table_name` ADD FULLTEXT (`column`);
5.添加多列索引 ,联合索引
ALTER TABLE `table_name` ADD INDEX index_name (`column1`,`column2`,`column3`);
查询sql是否用到了索引以及那个索引,sql前面加explain
explain SELECT * FROM test_a WHERE NAME ='张三';
可以发现用到了name索引 .
需要注意的是mysql在使用like查询的时候只有使用后面的%时,才会使用到索引
简单说明我们平时该怎么建索引,举个例子
我们有一张user表,有下列字段:
id INT
姓名 VARCHAR(10)
身份证号码 VARCHAR(18)
电话 VARCHAR(10)
住址 VARCHAR(50)
备注信息 TEXT
建索引的思路:
那么这个id,作为主键,使用 PRIMARY
姓名 如果要建索引的话,因为姓名会重复,那么就是普通的 INDEX
身份证号码 如果要建索引的话,那么可以选择 UNIQUE (唯一的,不允许重复)
备注信息 , 如果需要建索引的话,可以选择 FULLTEXT,全文搜索。
不过 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。
用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以,看实际情况