mysql 翻译系列 二十七

2025-03-06  本文已影响0人  如风_dcac

10.3.1 MySQL如何使用索引

版本8.0
索引用于快速查找具有特定列值的行。如果没有索引,MySQL必须从第一行开始,然后逐行读取整个表以找到相关行。表越大,这种方式的成本就越高。如果表中针对相关列建有索引,MySQL可以快速确定在数据文件中查找的位置,而无需查看所有数据。这比按顺序读取每一行要快得多。

大多数MySQL索引(PRIMARY KEYUNIQUEINDEXFULLTEXT)都存储在B树中。但也有例外:空间数据类型的索引使用R树;MEMORY表还支持哈希索引;InnoDBFULLTEXT索引使用倒排链表。

一般来说,索引的使用方式如下所述。有关哈希索引(如在MEMORY表中使用的)的特定特性,请参见10.3.9节 “B树索引和哈希索引的比较”。

MySQL在以下操作中使用索引:

SELECT MIN(key_part2),MAX(key_part2)
  FROM tbl_name WHERE key_part1=10;
SELECT key_part3 FROM tbl_name
  WHERE key_part1=1

对于小表的查询,或者对于处理大部分或所有行的大表的报表查询,索引的重要性较低。当查询需要访问大部分行时,按顺序读取比通过索引读取更快。即使查询不需要所有行,顺序读取也可以最小化磁盘查找。详细信息,请参见10.2.1.23节 “避免全表扫描”。

上一篇 下一篇

猜你喜欢

热点阅读