【问题标题】:Mysql alter query plan typeMysql 更改查询计划类型
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多