Maison > Questions et réponses > le corps du texte
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粉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_column
的INDEX
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.