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.
Voir Recherchable
Ce qui est pire, c'est que vous avez essentiellement
S'il existe un moyen de fusionner
li.tzOffset - li.dst
en une seule colonne, vous pouvez le faireCe 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.