MySQL 索引基数
简介:在本教程中,您将了解MySQL索引基数以及如何使用SHOW INDEXES命令查看索引基数。
索引基数是指存储在索引中指定列中的值的唯一性。
MySQL基于存储为整数的统计信息生成索引基数,因此,值可能不一定精确。
查询优化器使用索引基数为给定查询生成最佳查询计划。它还使用索引基数来决定是否在连接操作中使用索引。
如果查询优化器选择具有低基数的索引,则它可能比不使用索引扫描行更有效。
要查看索引基数,请使用
例如,以下语句返回示例数据库中具有基数(*)的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)
(*)滚动到输出的右侧以查看索引基数。
在输出中,orderNumber列显示表具有326个唯一值,而 customerNumer列仅具有98倍不同的值。
如前所述,索引统计信息仅是近似值,可能不代表表中行的实际大小。要生成更准确的统计信息,请使用ANALYZE TABLE命令。