【问题标题】:Too much time on optimal path在最佳路径上花费太多时间
【发布时间】:2015-08-24 16:18:34
【问题描述】:

下面的查询只用了 0.04 秒

SELECT A.* 
FROM  `TABLE1` 
JOIN TABLE2 ON ( TABLE1.ID = TABLE2.ID ) 
WHERE  `COL1` ='1'

下一个查询需要 4 秒

SELECT A.* FROM  `TABLE1` 
JOIN TABLE2 ON ( TABLE1.ID = TABLE2.ID ) 
WHERE  `COL1` ='1' and col2 not in (....ard 4k integers...P

最大时间花在统计上(3 秒以上),这可能意味着寻找最佳查询路径。

我使用的是 MySQL 5.5.25,只是想知道这是否是一个错误。

【问题讨论】:

  • 尝试创建覆盖索引为alter table TABLE1 add index col1_col2_idx(col1,col2) .. 假设ID为主键,然后查看性能。

标签: mysql mysql5 mysql-5.5


【解决方案1】:

这是 mysql 的常见限制,不建议使用大的 IN 子句。创建一个临时表,然后加入它。复制临时表时要小心,很可能不需要复制它,这可能会导致延迟。

【讨论】:

    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多