首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL DATE函数在LEFT JOIN中运行异常缓慢

问MYSQL DATE函数在LEFT JOIN中运行异常缓慢
EN

Stack Overflow用户
提问于 2009-11-20 02:50:17
回答 3查看 1.5K关注 0票数 3

添加线路时:

代码语言:javascript
复制
LEFT JOIN core_records_sales as sales ON DATE(appointments.date) = DATE(sales.date_sold)

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

会不会有一些数据导致了这个问题,或者我没有正确地实现函数?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-20 03:01:39

这几乎肯定是被索引的appointments.date字段的问题。添加DATE()函数使其不能使用索引,从而强制表扫描。

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

我很乐意听到其他人是否有更好的方法来处理这个问题。

票数 2
EN

Stack Overflow用户

发布于 2009-11-20 02:54:00

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

通过EXPLAIN运行查询,以查看查询优化器为查询计划提供了什么。

票数 1
EN

Stack Overflow用户

发布于 2009-11-20 02:55:23

这可能是因为您强制对两个表进行全表扫描,而以前您使用索引作为查询的一部分。您需要检查计划(并向我们提供更多细节),因此通过EXPLAIN运行它,看看发生了什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1765667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档