Maison >base de données >tutoriel mysql >Comment indexer la partie date d'un champ DATETIME dans MySQL ?

Comment indexer la partie date d'un champ DATETIME dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-17 22:24:02306parcourir

How to Index the Date Part of a DATETIME Field in MySQL?

Création d'un index sur la partie date d'un champ DATETIME dans MySQL

Pour créer un index sur la partie date d'un champ DATETIME, vous pouvez utiliser la syntaxe suivante :

CREATE INDEX idx_date ON table_name(DATE(date_field));

Par exemple, pour créer un index sur le champ TranDateTime dans la table transactionlist, vous exécuterez la requête suivante :

CREATE INDEX idx_date ON transactionlist(DATE(TranDateTime));

Une fois que vous Après avoir créé l'index, vous pouvez l'utiliser pour accélérer les requêtes qui filtrent sur la partie date du champ. Par exemple, la requête suivante utilisera l'index idx_date pour rechercher rapidement toutes les transactions survenues le 17/08/2008 :

SELECT * FROM transactionlist 
WHERE DATE(TranDateTime) = '2008-08-17';

Éviter la fonction DATE() dans les requêtes d'index

Il est important de noter que l'utilisation de la fonction DATE() dans une requête d'index peut contourner l'index et entraîner une analyse complète de la table. En effet, MySQL ne peut pas optimiser les requêtes qui utilisent des fonctions pour modifier les colonnes indexées.

Au lieu de cela, vous devez utiliser une requête par plage pour spécifier la plage de dates que vous souhaitez rechercher. Par exemple, la requête suivante utilisera l'index idx_date pour trouver rapidement toutes les transactions survenues entre le 17/08/2008 et le 17/08/2008 23:59:59.999999 :

SELECT * FROM transactionlist 
WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';

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!

Déclaration:
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