Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL日期函数在左连接中运行异常缓慢_Php_Mysql_Datetime_Left Join - Fatal编程技术网

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,索引并没有真正的帮助。不幸的是,可能不得不这样做。谢谢