所以,情况是 - 在下面的查询中,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;
DATE_FORMAT()
子句中使用了WHERE
函数。因此,表数据将与此值进行比较。 我的问题,
1.如果我使用LIKE '2015-12-21%'
代替DATE_FORMAT()
,会有什么性能差异?
2.还有其他更好的方法可以编写此查询吗?
答案 0 :(得分:0)
感谢您的支持。
我发现,由于我查询的表非常大,因此无论使用Between
还是LIKE
运算符,都需要相同的时间。
最后,我通过查询24小时数据并将数据合并到我的应用程序逻辑中的day-array来解决了这个问题。就我而言,PHP。
这是比较 -
使用BETWEEN
或LIKE
运营商的一天数据查询 -
查询响应时间:16分钟apprx。
使用BETWEEN
或LIKE
运营商的一小时数据查询 -
查询响应时间为1小时:2秒* 24小时= 48秒apprx。
希望这有助于某人至少。