1.概念:索引是优化数据库查询速度的重要途径。
2.索引的类型:
<1>.普通索引:最基本的索引类型,没有唯一性之类的限制。
①单例索引:create index valIndex on t_tableA(val(20));
②多列索引:create index products_index on t_products(prod_name(20),prod_price);
说明:(1.)多列索引,同时查,索引生效。
(2.)只查prod_name(20),索引生效
(3.)只查prod_price,索引不生效
联合索引,以左边的为准,单独用左边的会生效,单独用右边的不会生效。
其实总结一下:以左边第一个或者所有会生效,其他的情况都不生效。
eg.(A,B,C)三个联合索引,A和ABC会生效,其他的情况下不生效。
<2>.唯一索引:和普通索引基本相同,但是所有的索引列只能出现一次,保持唯一性。
create unique index valIndex2 on t_tableB(val(20));
<3>.主键索引:主键索引是一种特殊的唯一索引,在建立主键时自动创建。
<4>.全文索引:语法同普通索引相同,就是可以在文本类型列上可以创建索引。
(全文索引可以在varchar或text类型上创建)
3.索引的缺点:
<1>.虽然索引大大提高了查询速度,但是会降低更新表的速度。
比如对表的insert、update、delete操作。
因为更新表时,mysql不仅仅要保存数据,还要保存索引文件。
<2>.建立索引会占用磁盘空间。如果在一个大表上创建了多种索引组合,索引文件会膨胀的很快。
4.注意事项:
<1>.索引是建立在常用的列上,比如你经常根据某一列(用户名,密码)去查数据
<2>.索引相当于字典前面的目录。
<3>.加不加索引要权衡一下是查询多,还是update,insert,delete多!!!
《4》并不是所有的表都适合加索引的!!
①记录少是不要加索引!
②每次查询的数据占总的数量很大时,不要加索引。
③多列索引:对查询频率高的列放在前面。
④数据库量很大,并且每次查询的数据占总量比较少时,加索引谁体会到明显的效率!!
转载于:https://blog.51cto.com/hanchaohan/926580