【发布时间】:2013-08-31 11:19:00
【问题描述】:
您好,我有一个这样的查询
SELECT (SELECT CSN FROM apps as b WHERE
a.key1=b.key1 AND a.key2 = b.key2 AND b.seq=MAX(b.seq) LIMIT 0,1) AS CSN,
a.key1
FROM apps as a GROUP BY key1, key2
现在,当我使用 EXPLAIN 时,我发现类型是范围,而 extras 是“使用索引进行分组”。 在 350 000 行表上完成此计划需要 10 秒。然而有时它开始只需要 4 秒,执行计划是 type: index 和 extra: using where
所以问题是为什么会发生这种情况,一旦计划是第一个,一次是第二个,我可以以某种方式改变计划吗?
【问题讨论】:
-
考虑提供 DDL 和/或 sqlfiddle
标签: mysql select group-by sql-execution-plan explain