Optimisation de la base de données : évaluer l'indexation d'une seule table par rapport à plusieurs petites tables sans index
Dans le domaine de l'optimisation des bases de données, le débat entre l'utilisation d'un une seule table avec un index ou plusieurs tables plus petites sans index se produit souvent. Pour faire la lumière sur ce sujet, examinons un scénario spécifique.
Scénario :
Considérons un tableau nommé « statistiques » avec 20 000 utilisateurs et 30 millions de lignes, comportant colonnes pour l'ID utilisateur, les actions, les horodatages, etc. Les opérations de requête primaires impliquent l'insertion de données basées sur l'ID utilisateur et la récupération de données pour des ID utilisateur spécifiques.
Question :
Serait-ce plus efficace pour exploiter un index sur une seule table de « statistiques » ou opter pour une table de « statistiques » distincte pour chaque utilisateur, éliminant ainsi le besoin d'index ?
Réponse :
L'utilisation de 20 000 tables n'est pas recommandée, car cela entraîne des problèmes de maintenance et des goulots d'étranglement en termes de performances. Au lieu de cela, le partitionnement MySQL fournit une solution pour optimiser les performances sans sacrifier l'intégrité des données.
Partitionnement MySQL :
<code class="sql">CREATE TABLE statistics ( id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, PRIMARY KEY (id, user_id) ) PARTITION BY HASH(user_id) PARTITIONS 101;</code>
Avantages du partitionnement :
Considérations :
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!