DATE_FORMAT vs LIKE在MySQL中的性能比较

时间:2016-01-11 09:28:49

标签: mysql

所以,情况是 - 在下面的查询中,2个表之间有一个JOIN。

SELECT saza.required_impressions as required_impressions, saza.requested_impressions as allocated_impressions, SUM(ahs.impressions) as delivered_impressions, saza.zone_id as zone_id 
FROM ox_data_summary_ad_zone_assoc as saza 
INNER JOIN ox_data_summary_ad_hourly as ahs 
ON saza.ad_id = ahs.ad_id AND saza.zone_id = ahs.zone_id 
WHERE saza.ad_id = 18867 AND DATE_FORMAT(saza.interval_start, '%Y-%m-%d') = '2015-12-21' 
GROUP BY saza.zone_id 
ORDER BY saza.zone_id;
  • 这些表中的每一个都包含大量数据(每个约167,334,535行)。
  • 如果您观察到,DATE_FORMAT()子句中使用了WHERE函数。因此,表数据将与此值进行比较。
  • 此查询需要近16分钟才能完成执行。

我的问题,
 1.如果我使用LIKE '2015-12-21%'代替DATE_FORMAT(),会有什么性能差异?  2.还有其他更好的方法可以编写此查询吗?

1 个答案:

答案 0 :(得分:0)

感谢您的支持。

我发现,由于我查询的表非常大,因此无论使用Between还是LIKE运算符,都需要相同的时间。

最后,我通过查询24小时数据并将数据合并到我的应用程序逻辑中的day-array来解决了这个问题。就我而言,PHP。

这是比较 -

使用BETWEENLIKE运营商的一天数据查询 -

查询响应时间:16分钟apprx。

使用BETWEENLIKE运营商的一小时数据查询 -

查询响应时间为1小时:2秒* 24小时= 48秒apprx。

希望这有助于某人至少。