gpt4 book ai didi

mysql - 多列上的索引使用

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

我有一个包含 2.5 亿条记录的表格,记录了居住在美国及其州、县和定居点的人。简化版本如下所示:

mysql

我在姓氏、地区、次地区和地点上建立了一个综合索引。以下查询在同一时间执行:

SELECT SQL_NO_CACHE surname, place, count(*) as cnt FROM `ustest` group by place, surname;

SELECT SQL_NO_CACHE surname, region, count(*) as cnt FROM `ustest` group by region, surname;

我的印象是第一个查询不会使用索引,因为我认为要使用索引,您必须从左到右查询所有列。

谁能解释一下 MySQL 在这种情况下如何在多个列上使用索引?

最佳答案

如果不查看 EXPLAIN 输出,很难说出查询执行计划的细节。

但有两件事跳出来了:

  1. 这两个查询都必须考虑表中的所有行(您没有 WHERE 子句)。
  2. 这两个查询都可以通过扫描您的复合索引来满足,surname 是该索引的前导列。因为您正在计算项目,所以有必要进行紧密而不是松散的索引扫描。 (您可以阅读这些内容。)

所以他们有可能有相同的执行计划。

关于mysql - 多列上的索引使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28127725/

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