MySQL 索引基数
简介:在本教程中,您将了解MySQL索引基数以及如何使用
SHOW INDEXES
命令查看索引基数。
索引基数是指存储在索引中指定列中的值的唯一性。
MySQL基于存储为整数的统计信息生成索引基数,因此,值可能不一定精确。
查询优化器使用索引基数为给定查询生成最佳查询计划。它还使用索引基数来决定是否在连接操作中使用索引。
如果查询优化器选择具有低基数的索引,则它可能比不使用索引扫描行更有效。
要查看索引基数,请使用SHOW INDEXES
命令。
例如,以下语句返回示例数据库中具有基数(*)的orders
表的索引信息:
mysql> SHOW INDEXES FROM orders; +--------+------------+----------------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | +--------+------------+----------------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | orders | 0 | PRIMARY | 1 | orderNumber | A | 326 | NULL | NULL | | BTREE | | | YES | | orders | 1 | customerNumber | 1 | customerNumber | A | 98 | NULL | NULL | | BTREE | | | YES | +--------+------------+----------------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ 2 rows in set (0.01 sec)(*)滚动到输出的右侧以查看索引基数。 在输出中,
PRIMARY KEY
为 orderNumber
列显示表具有326个唯一值,而 customerNumer
列仅具有98倍不同的值。
如前所述,索引统计信息仅是近似值,可能不代表表中行的实际大小。要生成更准确的统计信息,请使用ANALYZE TABLE
命令。