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命令。