当添加一行:运行在LEFT出奇的慢MYSQL DATE函数JOIN
LEFT JOIN core_records_sales as sales ON DATE(appointments.date) = DATE(sales.date_sold)
为了我的查询,它能增强时间脚本从约8秒运行,2-3分钟。
会有一些数据导致这个问题,或者我没有正确实现该功能?
我需要,因为我需要他们在同一天,但日期字段是DATETIME
当添加一行:运行在LEFT出奇的慢MYSQL DATE函数JOIN
LEFT JOIN core_records_sales as sales ON DATE(appointments.date) = DATE(sales.date_sold)
为了我的查询,它能增强时间脚本从约8秒运行,2-3分钟。
会有一些数据导致这个问题,或者我没有正确实现该功能?
我需要,因为我需要他们在同一天,但日期字段是DATETIME
这几乎可以肯定是约会的约会问题。添加DATE()函数的使用使得不能使用索引,强制进行表扫描。
以前我不得不面对这个问题,而我发现解决问题的最好方法是在其中只有日期部分(没有时间)的单独列或存储日期和时间在两个单独的列中。
我很想听听别人是否有更好的处理方式。
不幸的是可能要走这条路。谢谢! – kilrizzy 2009-11-19 19:55:57
这可能是因为你在两个表上强制进行全表扫描,而之前你在使用索引作为查询的一部分。您需要检查计划(并提供更多详细信息),请通过EXPLAIN运行以查看发生了什么。
每个表中有多少行以及哪些列被索引? – Cruachan 2009-11-19 18:53:24