0

嗨,我有这样的查询

      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 时,我知道类型是范围,而附加功能是“使用索引进行分组”。在 350 000 行表上完成此计划需要 10 秒。然而有时它开始只需要 4 秒,执行计划是 type: index 和 extra: using where

所以问题是为什么会发生这种情况,一旦计划是第一次,一次是第二次,我可以以某种方式改变计划吗?

4

1 回答 1

0

好吧,我想通了。InnoDB 统计信息可能已关闭。我调用了分析表来更新统计信息,现在它又回到了较低的数字。

于 2013-08-29T09:40:17.767 回答