首頁  >  問答  >  主體

優化查詢,將內容新增至 WHERE 的目前時間

我有一個查詢正在執行以下操作:

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粉218775965P粉218775965215 天前382

全部回覆(1)我來回復

  • P粉561438407

    P粉5614384072024-04-05 15:52:08

    請參閱可搜尋

    #更糟的是,你基本上已經

    WHERE function(variable1, variable2) BETWEEN ...

    如果有某種方法可以將 li.tzOffset - li.dst 合併到單一列中,那麼您可以這樣做

    WHERE new_column BETWEEN ...

    其中可能能夠使用涉及new_columnINDEX

    我認為索引產生列是在 5.7 中新增的。如果沒有“產生的列”,您將需要新增一個新列並計算其中的差異。

    回覆
    0
  • 取消回覆