Mysql改变查询计划类型

时间:2013-08-28 11:45:40

标签: mysql select group-by sql-execution-plan explain

您好我有这样的查询

      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时,我得到的类型是范围,额外的是'使用索引进行分组'。 该计划需要10秒才能完成35万行表。但有时它开始只需要4秒,执行计划是类型:索引和额外:使用where

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

1 个答案:

答案 0 :(得分:0)

哦,我想通了。 InnoDB的统计数据可能已经关闭。我打电话给分析表来更新统计信息,现在又回到了较低的数字。