Maison > base de données > tutoriel mysql > Comment sélectionner efficacement les enregistrements MySQL par jour, en ignorant l'heure ?

Comment sélectionner efficacement les enregistrements MySQL par jour, en ignorant l'heure ?

Mary-Kate Olsen
Libérer: 2024-12-06 20:04:13
original
568 Les gens l'ont consulté

How to Efficiently Select MySQL Records by Day, Ignoring Time?

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'
Copier après la connexion

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'
Copier après la connexion

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'
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal