MySQL索引基数

时间:2019-11-20 08:52:15  来源:igfitidea点击:

简介:在本教程中,您将了解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)

(*)滚动到输出的右侧以查看索引基数。

在输出中,orderNumber列的PRIMARY KEY显示该表具有326个唯一值,而customerNumer列仅具有98个不同值。

如前所述,索引统计信息仅是近似值,可能不代表表中行的实际大小。
要生成更准确的统计信息,请使用ANALYZE TABLE命令。