gpt4 book ai didi

MIN 和 MAX 的 MySQL 索引

转载 作者:可可西里 更新时间:2023-11-01 07:22:00 25 4
gpt4 key购买 nike

任何人都可以从官方 MySQL documentation 澄清这一点吗?

Indexes are used ... To find the MIN() or MAX() value for a specific indexed column key_col. This is optimized by a preprocessor that checks whether you are using WHERE key_part_N = constant on all key parts that occur before key_col in the index. In this case, MySQL does a single key lookup for each MIN() or MAX() expression and replaces it with a constant. If all expressions are replaced with constants, the query returns at once. For example: SELECT MIN(key_part2),MAX(key_part2) FROM tbl_name WHERE key_part1=10;

所以在他们的示例中,他们试图找到名为 key_col 的列的最小值和最大值。他们是否使用复合索引 key_part1_key_part2?索引的key_part2部分是否代表key_col列?

我完全不明白他们试图用常量替换表达式的意思。你能帮我解决这个问题吗?

更新: 问题不在于 WHERE 语句或索引如何在“最高级别”工作,如果我可以这么说的话。在这个关于 MIN 和 MAX 的特定点上,我对这个处理器的表达式替换东西感到困惑。

最佳答案

SELECT MIN(b), MAX(b) FROM tbl WHERE a = 12;

INDEX(a, b)

两列,按此顺序。

查询在索引中查找 a = 12,获取第一个 (a,b) 对以获得 MIN(b)并获取最后一对以获得 MAX(b)

关于“用常量替换”的说法令人困惑,因为它过于深入地讨论了如何首先确定如何执行查询(恰好获得最小值和最大值),然后继续执行什么的细节是查询的左边(什么都没有留下)。

更一般地说,最佳索引通常以所有WHERE 列开始,而不是= 常量。之后它变得复杂,所以让我再给一个提示:

“覆盖”索引是包含 SELECT 中提到的所有列的索引(在我的示例中为 ab)。

抱歉,我好像没有比手册更清楚

关于MIN 和 MAX 的 MySQL 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36991550/

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