【发布时间】:2021-12-30 22:30:50
【问题描述】:
我有这个查询,在 AWS Aurora 上运行,在 MySQL 模式下,它非常快(100 毫秒):
select rv.kind, rv.sub_kind, count(*)
from revenues rv
where rv.paid_at = '2021-11-17'
group by rv.kind, rv.sub_kind;
但是,如果我加上一个总和,它会非常变慢(1 分 20 秒):
select rv.kind, rv.sub_kind, count(*), sum(iugu_fee_cents)
from revenues rv
where rv.paid_at = '2021-11-17'
group by rv.kind, rv.sub_kind;
这是一个简单的查询,我有一个包含paid_at, kind, and sub_kind 的复合索引,按此顺序排列。在两个查询中使用EXPLAIN 确认索引正在被使用。
两个查询的其他信息相同,除了 Extra 列,它显示 Using where; Using index 用于快速查询,Using index condition 用于慢速查询。
有什么办法可以解决这个问题吗?
【问题讨论】:
-
可能您的第一个查询被索引覆盖,第二个查询虽然使用索引来定位行现在必须查找
iugu_fee_cents在基表中,所以将此列添加到您的索引中。 -
非常感谢,我刚看到这个问题,提示相同:stackoverflow.com/questions/1687548/…
-
请提供
SHOW CREATE TABLE;您的描述中可能遗漏了一些微妙的问题。
标签: mysql sql optimization indexing amazon-aurora