因此,我有一个具有约500万行的数据库,并且我正在尝试优化加载时间.我的数据库具有我认为可以优化的列和索引,因此我假设它是查询.该查询在具有约500万行的表上运行,并返回其中40行,但需要101秒.
如果我删除了时区转换,则同一查询将花费0.0015秒,但由于时区不同,返回的结果会略有不同.如何优化以更快的速度获得正确的结果?
SELECT *, date(CONVERT_TZ(eventDate, "US/Eastern", "America/New_York")) as `timezoneDate`
FROM `transactions`
WHERE `isValid` = X
AND `storeID` = X
AND date(CONVERT_TZ(eventDate, "US/Eastern", "America/New_York")) >= '2014-11-19'
AND date(CONVERT_TZ(eventDate, "US/Eastern", "America/New_York")) <= '2014-11-25'
ORDER BY `eventDate`
同样,如果之前不清楚,我将转换为第二时区的时间取决于用户,因此现在它的America / New_York与US / Eastern相同,但是会更改.
解决方法:
我最终要做的是混合使用JRD,TZHX和MarcB的评论.我最终做了一个没有时区的选择,但是将选择半径增加了正负一天.这使我的约500万行减少到大约50行,但是由于它略多于我想要的行数,因此我随后运行了原始查询,但只运行了第一个选择返回的50个结果.这导致返回所有完全相同的数据,但仅需0.11秒.非常感谢你们!