Partitionnement d'une table par colonne Datetime
Dans MySQL, le partitionnement d'une table par colonne datetime permet une gestion efficace des données et des requêtes optimisées en divisant la table en unités logiques plus petites. Cependant, lorsque vous tentez de partitionner une table par colonne datetime à l'aide du partitionnement HASH, des problèmes peuvent survenir lors de la sélection des données pour des jours spécifiques.
Limitations du partitionnement HASH
Utilisation du partitionnement HASH sur Les colonnes datetime peuvent être problématiques car MySQL ne peut pas utiliser l'élagage des partitions. Cela signifie que les requêtes qui filtrent en fonction d'une plage de valeurs datetime peuvent ne pas utiliser la partition spécifiée.
Options de partitionnement alternatives
Pour surmonter ces limitations, des stratégies de partitionnement alternatives peuvent être employé :
Stocker le résultat de TO_DAYS(DATE()) dans une colonne INTEGER supplémentaire. Cela permet un élagage efficace sur la colonne entière au lieu de la colonne datetime.
Partitionnez la table à l'aide du partitionnement RANGE sur TO_DAYS (ftime) colonne. Cela crée des partitions basées sur une plage de jours, permettant une récupération précise des données pour des jours spécifiques.
Exemple
Considérez la table partitionnée RANGE suivante :
CREATE TABLE raw_log_2011_4 ( id bigint(20) NOT NULL AUTO_INCREMENT, logid char(16) NOT NULL, tid char(16) NOT NULL, reporterip char(46) DEFAULT NULL, ftime datetime DEFAULT NULL, KEY id (id) ) ENGINE=InnoDB AUTO_INCREMENT=286802795 DEFAULT CHARSET=utf8 PARTITION BY RANGE( TO_DAYS(ftime) ) ( PARTITION p20110401 VALUES LESS THAN (TO_DAYS('2011-04-02')), PARTITION p20110402 VALUES LESS THAN (TO_DAYS('2011-04-03')), ... PARTITION p20110429 VALUES LESS THAN (TO_DAYS('2011-04-30')), PARTITION future VALUES LESS THAN MAXVALUE );
Cette table contiendra des partitions pour chaque jour d'avril 2011. Désormais, la requête :
SELECT * FROM raw_log_2011_4 WHERE ftime = '2011-04-03';
utilisera uniquement la partition p20110403, ce qui permettra une récupération efficace des données pour un jour spécifique.
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!