我有一个查询正在执行以下操作:
AND TIME(NOW() + INTERVAL li.tzOffset HOUR - INTERVAL li.dst HOUR) BETWEEN '08:00:00' AND '20:00:00'
问题是它的性能不是很好,但我不清楚是否有办法提高它的性能。 tzOffset 或 dst 都没有索引。为它们建立索引会有帮助吗?
我目前正在运行 MySQL 5.6,但预计我可能会在一两周内升级到 5.7。如果 MySQL 8.0 具有可以加快查询速度的功能,那么了解这一点也很好,这样我就可以为我们花时间研究这个问题提供理由。
P粉5614384072024-04-05 15:52:08
请参阅可搜索
更糟糕的是,你基本上已经
WHERE function(variable1, variable2) BETWEEN ...
如果有某种方法可以将 li.tzOffset - li.dst
合并到单个列中,那么您可以这样做
WHERE new_column BETWEEN ...
其中可能能够使用涉及new_column
的INDEX
我认为索引生成列是在 5.7 中添加的。如果没有“生成的列”,您将需要添加一个新列并计算其中的差异。