索引行偏差

问题描述 投票:0回答:1

我有一个名为出勤的表,其中包含三列:Student_id、日期、状态。我将复合主键指定为 Student_Id、日期。所以会自动为它们创建索引。该表有 100k 行。 Student_Id 有 1 到 40。每个都有 2500 的计数。如果尝试针对 Student_Id 进行查询,我会在解释中得到不同的行计数。怎么可能?

explain select * from Attendance where Student_Id=40;

这是查询。对于 40,它给出的行为 50 834,对于 id 2,它给出的行为 47 638。

我得到了不同的计数。但期望相同的行数。

indexing explain
1个回答
0
投票

索引的选择性是指索引列中值的唯一性。如果 Student_Id 列的选择性较低(即许多行具有相同的 Student_Id 值),MySQL 可能会选择不对某些查询使用索引,特别是当查询优化器确定全表扫描会更有效时。

这是否会成为一个原因。

© www.soinside.com 2019 - 2024. All rights reserved.