一、建立索引的优缺点
1、好处:
①加快了查询速度
2、坏处:
①降低了增删改的速度
②增大了表的文件大小(索引文件甚至可能比数据文件还大)
二、索引的使用原则
①不要过度索引
②索引条件列(where后面最频繁的条件比较适宜索引)
③索引散列值,过于集中的值不要索引
三、索引的类型
普通索引(index):加快查询速度
唯一索引(unique):行上的值不能重复
主键索引(primary key):不能重复。
主键必唯一,但是唯一索引不一定是主键。
一张表上只能有一个主键,但是可以有一个或者多个唯一索引
全文索引(fulltext):一般类型是文本格式,即text,而且这个只针对myisam引擎
四、查看一张表上所有索引
show index from 表名;
五、建立索引
alter table 表名 add index [索引名] (列名); <--添加普通索引
alter table 表名 add unique [索引名] (列名); <--添加唯一索引
alter table 表名 add fulltext [索引名] (列名); <--添加全文索引
alter table 表名 add primary key (列名); <--添加主键
create index 索引名 on 表名(列名1,列名2,...); <--添加联合索引
create index 索引名 on 表名(列名(8)); <--对表中列的前8个字符创建索引
备注:索引名可以不加,默认是和列名一样
六、删除索引
alter table 表名 drop index 索引名;
alter table 表名 drop primary key;
七、案例
假设有新闻表15行,10行上面有索引,共500w行数据,如何快速导入数据?
①把表的索引全部删除
②导入数据
③导入数据完毕后,集中建立索引
八、全文索引
全文索引主要是针对myisam引擎的,在mysql默认情况下,对于中文的意义不大
因为英文有空格,标点符号开拆成单词,进而对单词进行索引;而对于中文,mysql无法识别每个中文词。
1、用法
select * from 表名 where match (全文索引名) against ('keyword');
2、关于全文索引的停止词
全文索引不针对非常频繁的词做索引,如this,is,you,my 等等。