gpt4 book ai didi

mysql - 通过多字段索引查询性能排序 yield

转载 作者:行者123 更新时间:2023-11-29 02:57:09 25 4
gpt4 key购买 nike

我正在考虑进行一些查询优化,但对多个索引的排序有疑问。

我知道您可以在多个列上创建索引,并且您必须将 where 子句的顺序与索引字段顺序相匹配。

我的问题是关于多字段索引中字段的顺序。例如,如果我们有 FirstNameLastName 字段,并且我们假设 LastNameFirstName 更独特,是否存在在一个排序中执行索引比另一个排序有好处吗?

例如(LastName, FirstName) 的索引是否会比 (FirstName, LastName) 的索引表现更好,反之亦然?

我从某人那里听说您想在您的 where 子句中首先执行最窄化的项目,所以如果是这种情况,我假设我们希望在索引中也这样做,但我想确认一下。

最佳答案

WHERE 子句中的测试顺序无关紧要。如果您匹配索引中的两列,它们在索引中的顺序也无关紧要。查询优化器将按索引顺序有效地连接两个字段,然后一步即可在索引中找到该条目。

仅当您匹配字段的子集时,复合索引中列的顺序才重要。如果您正在搜索索引的某些前缀,仍然可以使用该索引。例如。如果您执行 WHERE firstname = 'John',则可以使用 (firstname, lastname),但如果您执行 WHERE lastname = 'Smith',则不能使用.参见 Does the order of columns matter in a multi-column index if there is no value in the WHERE clause有关此的更多详细信息。

关于mysql - 通过多字段索引查询性能排序 yield ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29571880/

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