MySQL索引的优点和缺点及注意事项

 2015年10月31日    515     声明


索引可以让存储引擎快速找到数据在表中的位置,合理的使用索引可以使MySQL的查询速度大幅提高,但不恰当的使用索引也会影响查询效率。


1. MySQL索引的优点和缺点

索引最常用的作用是让服务器快速定位目标数据,但根据创建索引的数据结构的不同,索引也会有一些其它的附加作用。例如,在B-Tree索引中,由于数据是按顺序存储的,MySQL也会用来做ORDER BYGROUP BY操作。

索引的优点主要体现在以下几个方面:

  1. 索引可以减少服务器需要扫描的数据量,从而大大提高查询效率。
  2. 唯一索引能保证表中数据的唯一性。
  3. 利用索引对数据存储的特性,可以使查询语句避免排序和创建临时表。
  4. 索引可以将随机I/O变为顺序I/O。

索引的缺点主要体现在以下几个方面:

  1. 索引的创建和维护会造成工作量的增加。
  2. 索引会造成数据量的增加,除了数据表中数据占数据空间之外,每一个索引还要占一定的物理空间。
  3. 不恰当的使用索引会造成服务器重复扫描数据,造成查询浪费。


2. 使用MySQL索引的注意事项

正确的创建和使用索引,才能实现高性能的数据查询。只有当索引帮助存储引擎快速查找到了其所要查找的记录时,且其带来的查询效率的提高大于其额外所做的工作时,索引才是有效的。

当要查询的数据列存在索引时,存储引擎会优先在索引中查找数据。根据索引的特性,使用时应该注意以下事项:

  • 如果数据表中的数据量非常小,大部分情况下简单的全表扫描会比使用索引效率更高。
  • 对于中型表,使用索引会非常有效。但查询条件应该与字段索引配合使用,才能有效的利用索引。
  • 对大型表,建立和使用索引的代价会比较高,这时应该优先考虑对存储的数据进行分组等优化,而不是优先考虑使用索引。