MySQL 高性能的索引

  • A+
所属分类:MySQL

索引(在 MySQL 中也叫做“键( key )”)是存储引擎用于快速找到记录的一种数据结构。

索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。

索引基础

MySQL 中,存储引擎用类似的方法使用索引,其先在索引中找到对应值,然后根据匹配的索引记录找到对应的行,假如使用以下查询:

mysql > select first_name from sakila.actor where actor_id = 5;

如果在 actor_id 列上建有索引,则 MySQL 将使用该索引找到 actor_id 为5的行,也就是说,MySQL 先在索引上按值进行查找,然后返回所有包含该值的数据行。

索引可以包含一个或者多个列的值。如果索引包含多个列,那么列的顺序也十分重要,因为 MySQL 只能高效地使用索引的最左前缀列。

索引的优点

索引可以让服务器快速定位到表的指定位置。但是并不是索引的唯一作用,根据创建的索引的数据结构不同,索引也有一些其他的作用。

最常见的 B-Tree 索引,按照顺序存储数据,所以 MySQL 可以用来做 GROUP BY 操作。因为数据是有序的,所以 B-Tree 也就会将相关的列值都存储在一起。最后,因为索引中存储了实际的列值,所以某些查询只使用索引就能够完成全部查询。据此特性,总结下来索引有以下三个优点:

1. 索引大大减少了服务器要扫描的数据量

2. 索引可以帮助服务器避免排序和临时表

3. 索引可以将随机 I/O 变为顺序 I/O

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: