Heim  >  Fragen und Antworten  >  Hauptteil

Optimieren Sie die Abfrage, um Inhalte zur aktuellen Zeit in WHERE hinzuzufügen

Ich habe eine Abfrage, die Folgendes bewirkt:

AND TIME(NOW() + INTERVAL li.tzOffset HOUR - INTERVAL li.dst HOUR) BETWEEN '08:00:00' AND '20:00:00'

Das Problem ist, dass die Leistung nicht sehr gut ist, aber ich weiß nicht, ob es eine Möglichkeit gibt, die Leistung zu verbessern. Es gibt weder für tzOffset noch für dst einen Index. Würde es helfen, sie zu indizieren?

Ich verwende derzeit MySQL 5.6, gehe aber davon aus, dass ich in ein oder zwei Wochen wahrscheinlich auf 5.7 upgraden werde. Wenn MySQL 8.0 über Funktionen verfügt, die Abfragen beschleunigen können, wäre es auch gut, darüber Bescheid zu wissen, damit ich es rechtfertigen kann, Zeit mit der Untersuchung des Problems zu verbringen.

P粉218775965P粉218775965179 Tage vor310

Antworte allen(1)Ich werde antworten

  • 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 中添加的。如果没有“生成的列”,您将需要添加一个新列并计算其中的差异。

    Antwort
    0
  • StornierenAntwort