添加行时:
LEFT JOIN core_records_sales as sales ON DATE(appointments.date) = DATE(sales.date_sold)
对于我的查询,它将脚本运行的时间从大约8秒增加到2-3分钟。
是否会有一些数据导致此问题,或者我没有正确实现该功能?
我需要使用DATE(),因为我需要它们是同一天,但日期字段是DATETIME
答案 0 :(得分:2)
对于被编入索引的appointmentments.date字段,这几乎肯定是个问题。添加使用DATE()函数使得无法使用索引,从而强制进行表扫描。
我之前必须处理这个问题,我找到解决问题的最好方法是在其中设置一个单独的列,其中只包含日期部分(没有时间)或存储日期和时间两个单独的栏目。
我很想知道其他人是否有更好的方法来解决这个问题。
答案 1 :(得分:1)
您是否在日期列上有索引?没有索引的连接需要全表扫描,因此可能是性能问题的原因。
通过EXPLAIN运行查询,以查看查询优化程序为查询计划提供的内容。
答案 2 :(得分:0)
这可能是因为您在两个表上强制执行全表扫描,而之前您使用索引作为查询的一部分。您需要检查计划(并向我们提供更多详细信息),然后通过EXPLAIN运行它以查看正在发生的事情。