Php MYSQL日期函数在左连接中运行异常缓慢
添加行时:Php MYSQL日期函数在左连接中运行异常缓慢,php,mysql,datetime,left-join,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日期列上有索引吗?在没有索引的情况下进行连接需要进行完整的表扫描,因此这可能是性能问题的原因 通过运行查询以查看查询优化器
LEFT JOIN core_records_sales as sales ON DATE(appointments.date) = DATE(sales.date_sold)
对于我的查询,它将脚本运行时间从大约8秒提高到2-3分钟
是否有一些数据导致此问题,或者我没有正确实现此功能
我需要使用DATE(),因为我需要它们是同一天,但日期字段是DATETIME日期列上有索引吗?在没有索引的情况下进行连接需要进行完整的表扫描,因此这可能是性能问题的原因
通过运行查询以查看查询优化器为查询计划提供了什么。这可能是因为您正在强制对两个表进行完整的表扫描,而以前您使用索引作为查询的一部分。您需要检查计划(并向我们提供更多的细节),因此请通过EXPLAIN查看发生了什么。这几乎肯定是对“约会日期”字段进行索引的问题。添加DATE()函数的使用使其无法使用索引,从而强制进行表扫描 我以前不得不处理这个问题,我发现解决这个问题的最好方法是使用一个单独的列,其中只包含日期部分(没有时间),或者将日期和时间存储在两个单独的列中
我很想知道其他人是否有更好的方法来处理这个问题。每个表中有多少行,哪些列被索引?鉴于OP的基础列是DATETIME,索引并没有真正的帮助。不幸的是,可能不得不这样做。谢谢