首页  >  问答  >  正文

优化查询,将内容添加到 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粉218775965179 天前307

全部回复(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
  • 取消回复