所以我有一个 DB
~500 万行,我正在尝试优化加载时间。我的数据库有尽可能优化的列和索引,所以我假设它是查询。此查询在包含 ~500 万行 的表上运行并返回其中的 40 行,但需要 101 秒。
如果我删除 timezone
转换,相同的查询需要 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 秒。非常感谢大家!
关于php - MySQL 查询优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33349699/