摘要:在本教程中,您将了解 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)
Code language: PHP (php)
(*) 滚动到输出右侧以查看索引基数。
在输出中, orderNumber
列的PRIMARY KEY
显示表有 326 个唯一值,而customerNumer
列只有 98 个不同值。
如前所述,索引统计信息只是近似值,可能并不代表表中行的实际大小。要生成更准确的统计信息,可以使用ANALYZE TABLE
命令。
本教程有帮助吗?