Maison  >  Questions et réponses  >  le corps du texte

Optimisez la requête pour ajouter du contenu à l'heure actuelle dans OÙ

J'ai une requête qui fait ce qui suit :

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

Le problème est que ses performances ne sont pas très bonnes, mais je ne sais pas s'il existe un moyen d'améliorer ses performances. Il n'y a aucun index sur tzOffset ou dst. Leur indexation serait-elle utile ?

J'utilise actuellement MySQL 5.6, mais je pense que je passerai probablement à la version 5.7 dans une semaine ou deux. Si MySQL 8.0 dispose de fonctionnalités capables d'accélérer les requêtes, il serait également bon de le savoir afin de pouvoir justifier de consacrer du temps à l'étude du problème.

P粉218775965P粉218775965179 Il y a quelques jours309

répondre à tous(1)je répondrai

  • P粉561438407

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

    Voir Recherchable

    Ce qui est pire, c'est que vous avez essentiellement

    WHERE function(variable1, variable2) BETWEEN ...

    S'il existe un moyen de fusionner li.tzOffset - li.dst en une seule colonne, vous pouvez le faire

    WHERE new_column BETWEEN ...

    Ce qui pourra utiliser implique new_columnINDEX

    Je pense que les colonnes génératrices d'index ont été ajoutées dans la version 5.7. S'il n'y a pas de « colonne générée », vous devrez ajouter une nouvelle colonne et calculer la différence.

    répondre
    0
  • Annulerrépondre