Création d'un index pour la partie date du champ DATETIME dans MySQL
Dans MySQL, les requêtes utilisant une fonction sur une colonne, telle que la date (TranDateTime), peut contourner l'index, entraînant un ralentissement des performances. Pour optimiser les requêtes sur la partie date d'un champ DATETIME, pensez plutôt à créer un index sur cette partie.
Le problème
Une grande table avec un champ DATETIME nommé TranDateTime constaté des performances lentes lors de l'interrogation d'enregistrements à une date spécifique à l'aide de :
SELECT * FROM transactionlist WHERE date(TranDateTime) = '2008-08-17'
Le Solution
Pour améliorer les performances, créez un index sur la partie date de TranDateTime en utilisant la requête suivante :
CREATE INDEX idx_TranDate ON transactionlist (DATE(TranDateTime))
Cet index permettra à MySQL de récupérer efficacement les enregistrements en fonction du date du champ TranDateTime, en optimisant la requête suivante :
SELECT * FROM transactionlist WHERE DATE(TranDateTime) = '2008-08-17'
Supplémentaire Considérations
Alternativement, pour éviter d'utiliser une fonction dans la requête, envisagez d'utiliser une requête par plage :
SELECT * FROM transactionlist WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';
Cette requête doit récupérer tous les enregistrements survenus le 17/08/2008 , y compris ceux avec une composante temporelle.
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!