Maison >base de données >tutoriel mysql >Comment sélectionner efficacement les enregistrements MySQL par jour, en ignorant l'heure ?
Comment sélectionner des enregistrements MySQL en fonction du jour sans tenir compte de l'heure
Lorsque vous travaillez avec une table contenant une colonne datetime, il est souvent nécessaire de récupérer les enregistrements d'un jour spécifique, quelle que soit l'heure à laquelle ils se sont produits. Cependant, l'utilisation d'une simple comparaison de dates peut s'avérer inefficace et empêcher l'utilisation de l'index.
L'approche incorrecte consiste à sélectionner des enregistrements où la fonction de date appliquée à la colonne datetime correspond au jour souhaité, par exemple :
SELECT * FROM tablename WHERE DATE(columnname) = '2012-12-25'
Cette requête nécessite que MySQL calcule la date de chaque ligne, ce qui peut être gourmand en calcul et lent pour les grands ensembles de données. De plus, l'utilisation d'un calcul dans la clause WHERE empêche l'optimisation de la requête à l'aide d'un index sur la colonne datetime.
Au lieu de cela, une approche plus efficace consiste à définir une plage de valeurs datetime qui représentent la journée entière. , en veillant à ce qu'il inclue le début et la fin de la date spécifique. Ceci est réalisé à l'aide de la clause BETWEEN :
SELECT * FROM tablename WHERE columnname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
Cette requête modifiée permet à MySQL d'utiliser un index sur la colonne datetime, améliorant considérablement les performances. Il est important de noter que cette approche garantit que les enregistrements de la journée entière sont sélectionnés, quelle que soit l'heure à laquelle ils se sont produits.
Notez que dans les versions récentes de MySQL, il est recommandé d'utiliser la syntaxe suivante pour éviter d'éventuels ambiguïté :
SELECT * FROM tablename WHERE columnname >= '2012-12-25 00:00:00' AND columnname < '2012-12-26 00:00:00'
En suivant ces directives, vous pouvez sélectionner efficacement les enregistrements en fonction du jour sans tenir compte de l'heure dans MySQL, garantissant ainsi des performances optimales de la base de données.
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!