gpt4 book ai didi

mysql - 具有重复值的列的数据库索引

转载 作者:可可西里 更新时间:2023-11-01 06:31:41 24 4
gpt4 key购买 nike

如果有一个包含员工详细信息的表,其中包含一列 Gender,其值可以是 M/F。现在在此列上创建索引是否有意义,是否会使搜索更快?从逻辑上讲,如果我们使用包含 Gender 作为列的 where 子句触发 select 语句,它应该将搜索时间减少一半。但我听说这种索引不会有帮助,并且在执行查询时实际上会被数据库优化器忽略。但我不明白为什么?有人可以解释一下吗?

最佳答案

在大多数情况下,只能使用一个索引来优化数据库查询。如果一个查询需要匹配多个索引列,查询规划器将不得不决定使用这些索引中的哪一个。每个索引都有一个基数,它大致是整个表中不同值的数量。具有更高基数的索引会更有效,因为选择与索引匹配的行将导致扫描很少的行以匹配其他条件。

gender 列上的索引只会将表格减半。任何其他索引都会更有效。

打个比方,想想电话簿。如果您只有一本涵盖整个国家/地区的电话簿,那么要搜索您想要的特定人将非常庞大且困难。所以电话簿通常只为一个城市或一个地区的几个城市制作,以使其尺寸合理。但是,如果您使用的是“男性电话簿”而不是区域电话簿,那么它几乎与整个国家的电话簿一样无法使用。创建新电话簿的标准是它们应该比整个国家的电话簿小得多。当您从一个巨大的尺寸开始时,减少 2 倍并不是很有用。

关于mysql - 具有重复值的列的数据库索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28256072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com