我有一個查詢正在執行以下操作:
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 中新增的。如果沒有“產生的列”,您將需要新增一個新列並計算其中的差異。