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》并不是所有的表都适合加索引的!!

 

①记录少是不要加索引!

②每次查询的数据占总的数量很大时,不要加索引。

③多列索引:对查询频率高的列放在前面。

④数据库量很大,并且每次查询的数据占总量比较少时,加索引谁体会到明显的效率!!