Comparaison d'index MySQL : entier et DateTime
Alors que les discussions précédentes ont comparé les types de champs Timestamp et DateTime sans indexation, cette enquête se concentre spécifiquement sur les performances de DateTime avec index par rapport à int avec index dans les tables InnoDB avec des millions d'enregistrements.
Dans ces scénarios, requêtes avec des critères basés sur :
Évaluation empirique
Les tests initiaux utilisant MySQL 5.1.41 et 10 millions d'enregistrements démontrent un avantage de vitesse remarquable pour int :
Query | DateTime with Index (sec) | int with Index (sec) |
---|---|---|
COUNT(*) | 120.27 | 25.02 |
BETWEEN | 8.41 | 1.56 |
Explication
L'efficacité de int est attribuée au fait que l'index peut être directement comparé aux critères de requête, éliminant ainsi le besoin pour MySQL d'analyser et de convertir les dates. En revanche, DateTime nécessite un traitement supplémentaire pour extraire et comparer les composants de date et d'heure.
Considérations supplémentaires
Des tests ultérieurs avec les deux types de champs stockés dans la même table ont donné des résultats similaires. performances, suggérant que MySQL peut optimiser les requêtes en reconnaissant l'équivalence des valeurs DateTime et int.
Conclusion
Sur la base de ces résultats, il est recommandé de stocker les dates et les heures comme int (horodatage UNIX) si les performances des requêtes basées sur l'index sont primordiales. Cette optimisation peut réduire considérablement le temps d'exécution des requêtes, en particulier dans les grandes bases de données avec des critères fréquents basés sur la date.
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!