LEFT JOIN中MYSQL DATE函数运行速度非常慢

时间:2009-11-19 18:50:17

标签: php mysql datetime left-join

添加行时:

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

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

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

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

3 个答案:

答案 0 :(得分:2)

对于被编入索引的appointmentments.date字段,这几乎肯定是个问题。添加使用DATE()函数使得无法使用索引,从而强制进行表扫描。

我之前必须处理这个问题,我找到解决问题的最好方法是在其中设置一个单独的列,其中只包含日期部分(没有时间)或存储日期和时间两个单独的栏目。

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

答案 1 :(得分:1)

您是否在日期列上有索引?没有索引的连接需要全表扫描,因此可能是性能问题的原因。

通过EXPLAIN运行查询,以查看查询优化程序为查询计划提供的内容。

答案 2 :(得分:0)

这可能是因为您在两个表上强制执行全表扫描,而之前您使用索引作为查询的一部分。您需要检查计划(并向我们提供更多详细信息),然后通过EXPLAIN运行它以查看正在发生的事情。