php - MySQL 查询优化?

标签 php mysql sql database optimization

所以我有一个 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/

相关文章:

php - 在Woocommerce中获取所有客户手机号

javascript - 在 div 中使用 Jquery 显示 AJax 响应

php - 正则表达式和匹配

php - MySQL:根据同一表的一条记录中的一个选定字段中的值删除表中的多行

mysql - C - 获取 MySQL 行到字符

javascript - 使用jquery从按钮的动态id动态显示内容

MySQL phpMyAdmin 从外键构建 JOIN

mysql - 将 NOW() 设置为日期时间数据类型的默认值?

mysql - 是否可以在 SQL 中使用正则表达式?

mysql - 查找给定坐标的特定半径内的所有位置的查询