2013-08-28 50 views
0

您好我有这样修改mysql的查询计划类型

 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秒钟才能在一张350,000行的桌子上完成。然而,有时候它只需要4秒钟,而执行计划是类型:索引和额外:使用其中

所以问题是为什么会发生这种情况,一旦计划是第一次和第二次,我可以莫名其妙地改变计划?

+0

考虑提供DDL和/或sqlfiddle – Strawberry

回答

0

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