Optimisation des requêtes de date avec l'index DATETIME MySQL
Lorsque vous travaillez avec des champs DATETIME dans MySQL, il est essentiel d'optimiser les requêtes qui impliquent un filtrage de date. Pour améliorer les performances des requêtes interrogeant une partie d'une colonne DATETIME, envisagez d'utiliser un index dédié.
Disons que vous disposez d'une table nommée transactionlist avec un grand nombre d'enregistrements et d'une colonne DATETIME appelée TranDateTime. Vous rencontrez des problèmes de performances lors de l'exécution de requêtes telles que :
SELECT * FROM transactionlist WHERE date(TranDateTime) = '2008-08-17'
Raison des requêtes lentes :
MySQL utilise une analyse de table entière pour exécuter cette requête car la colonne est transmise via la fonction date(). L'optimiseur de requêtes ne peut pas anticiper les résultats de la fonction et, par conséquent, contourne tout index.
Solution : créer un index de date
Pour éviter les analyses de table et améliorer les performances des requêtes , créez un index qui couvre la partie date de la colonne TranDateTime. Vous pouvez le faire avec la commande suivante :
CREATE INDEX idx_TranDateTime_date ON transactionlist (date(TranDateTime));
Exemple de requête avec index de date :
Après avoir créé l'index, votre requête l'utilisera et s'exécutera beaucoup plus rapidement. :
SELECT * FROM transactionlist WHERE date(TranDateTime) BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';
Remarque :
Lorsque vous utilisez l'opérateur BETWEEN, assurez-vous de spécifier la fin de la journée avec le composant horaire pour capturer toutes les transactions dans le délai souhaité plage de dates.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!