您的位置:首页 > 数据库 > MySQL

MySQL的索引机制,复合索引的使用原则

2017-04-12 10:02 295 查看
转载:http://blog.csdn.net/yanchengHUST/article/details/483

一般都会用书本中的目录来介绍索引机制,其实有些书本会有专门的快速检索附录,就很类似于数据库的索引。

MySQL的索引包括4类:主键索引(primary key)、唯一索引(unique)、常规索引(index)、全文索引(fullindex)。

Show index from table_name; --查看表中的索引
Show status like 'Handler_read%'  --查看索引的使用情况


复合索引,一般遵循最左前缀原则,如table_a 的 a b c 三列建复合索引

create index ind_table_a on table_a(a,b,c);

这里写代码片


那么,只有在条件中用到a,或者a、b,或者a、b、c这样的情况下,才会用到刚建的复合索引。

一、为什么要创建索引呢(优点)?

这是因为,创建索引可以大大提高系统的性能

第一, 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。


二、建立方向索引的不利因素(缺点)

也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽然,索引有许多优点,但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。

第一, 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: