添加线路时:
LEFT JOIN core_records_sales as sales ON DATE(appointments.date) = DATE(sales.date_sold)对于我的查询,它将脚本运行的时间从大约8秒增加到2-3分钟。
会不会有一些数据导致了这个问题,或者我没有正确地实现函数?
我需要使用DATE(),因为我需要它们是同一天,但日期字段是日期时间
发布于 2009-11-20 03:01:39
这几乎肯定是被索引的appointments.date字段的问题。添加DATE()函数使其不能使用索引,从而强制表扫描。
我以前必须处理这个问题,我找到的解决这个问题的最好方法是有一个单独的列,其中只包含日期部分(没有时间),或者将日期和时间存储在两个单独的列中。
我很乐意听到其他人是否有更好的方法来处理这个问题。
发布于 2009-11-20 02:54:00
您是否有日期列的索引?在没有索引的情况下连接需要全表扫描,因此这可能是性能问题的原因。
通过EXPLAIN运行查询,以查看查询优化器为查询计划提供了什么。
发布于 2009-11-20 02:55:23
这可能是因为您强制对两个表进行全表扫描,而以前您使用索引作为查询的一部分。您需要检查计划(并向我们提供更多细节),因此通过EXPLAIN运行它,看看发生了什么。
https://stackoverflow.com/questions/1765667
复制相似问题