gpt4 book ai didi

并非所有列都被索引时的 MySQL 优化

转载 作者:行者123 更新时间:2023-11-29 02:32:01 26 4
gpt4 key购买 nike

假设我有一个包含 3 列和数千条记录的表:

id # primary key
name # indexed
gender # not indexed

我想找到“所有名为 Alex 的男性”,即特定姓名和特定性别。

这里的幼稚方法(select * from people where name='alex' and gender=2)是否足够好?或者是否有更优化的方式,例如对名称的子查询?

最佳答案

假设你没有几千条记录,与名字匹配,只有少数是真正的男性,name 上的索引就足够了。通常,您不应该为基数很小的字段编制索引(只有 2 个可能的值意味着您将匹配 50% 的行,这不能证明使用索引是合理的)。

我能想到的唯一有用的异常(exception)是,如果您只选择姓名和性别,并且如果您将它们都放在索引中,则可以执行索引覆盖查询,这比按索引选择行然后从表中检索数据更快。

关于并非所有列都被索引时的 MySQL 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11682259/

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