1.概念:索引是优化数据库查询速度的重要途径。mysql
2.索引的类型:sql
<1>.普通索引:最基本的索引类型,没有惟一性之类的限制。数据库
①单例索引:create index valIndex on t_tableA(val(20));ide
②多列索引:create index products_index on t_products(prod_name(20),prod_price);优化
说明:(1.)多列索引,同时查,索引生效。spa
(2.)只查prod_name(20),索引生效索引
(3.)只查prod_price,索引不生效it
联合索引,以左边的为准,单独用左边的会生效,单独用右边的不会生效。table
其实总结一下:以左边第一个或者全部会生效,其余的状况都不生效。class
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》并非全部的表都适合加索引的!!
①记录少是不要加索引!
②每次查询的数据占总的数量很大时,不要加索引。
③多列索引:对查询频率高的列放在前面。
④数据库量很大,而且每次查询的数据占总量比较少时,加索引谁体会到明显的效率!!