代码之家  ›  专栏  ›  技术社区  ›  kilrizzy

MYSQL日期函数在左连接中运行异常缓慢

  •  3
  • kilrizzy  · 技术社区  · 16 年前

    LEFT JOIN core_records_sales as sales ON DATE(appointments.date) = DATE(sales.date_sold)
    

    对于我的查询,它将脚本运行时间从大约8秒提高到2-3分钟。

    是否有一些数据导致此问题,或者我没有正确实现此功能?

    我需要使用DATE(),因为我需要它们是同一天,但日期字段是DATETIME

    3 回复  |  直到 16 年前
        1
  •  2
  •   Eric Petroelje    16 年前

    几乎可以肯定,这是正在编制索引的约会.date字段的一个问题。添加DATE()函数的使用使其无法使用索引,从而强制进行表扫描。

    我很想知道其他人是否有更好的方法来处理这个问题。

        2
  •  1
  •   Ben S    16 年前

    日期列上有索引吗?在没有索引的情况下进行连接需要进行完整的表扫描,因此这可能是性能问题的原因。

    通过一个 EXPLAIN

        3
  •  0
  •   Cruachan    16 年前

    这可能是因为您在两个表上强制执行完整的表扫描,而以前您使用索引作为查询的一部分。你需要检查计划(并向我们提供更多的细节),所以请通过解释来了解发生了什么。