Maison >base de données >tutoriel mysql >Comment l'indexation des bases de données peut-elle améliorer considérablement les performances des requêtes ?

Comment l'indexation des bases de données peut-elle améliorer considérablement les performances des requêtes ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-23 15:31:15918parcourir

How Can Database Indexing Significantly Improve Query Performance?

L'importance des index de bases de données dans la gestion des données

Dans le domaine de la gestion des données, les index jouent un rôle essentiel dans l'optimisation des performances des bases de données, d'autant plus que la taille de l'ensemble de données continue de croître. Cet article approfondit les bases de l'indexation de bases de données pour fournir une explication complète indépendante de votre plate-forme de base de données spécifique.

Pourquoi les index sont importants

Les données stockées sur les périphériques de stockage sur disque sont organisées en blocs de données. Chaque bloc contient une partie des données réelles et un pointeur vers le bloc suivant. Contrairement aux listes chaînées, les blocs de disque n'ont pas besoin d'être stockés de manière contiguë.

Lors de la recherche d'enregistrements basés sur des champs non triés, une recherche linéaire est requise, nécessitant (N 1)/2 accès en bloc en moyenne. Pour les champs non clés (entrées uniques manquantes), l'intégralité du tablespace doit être analysée, nécessitant N accès en bloc.

En revanche, les champs triés permettent des recherches binaires, qui ne nécessitent que des accès en bloc log2 N. De plus, pour les champs non clés, la recherche peut être terminée dès qu'une valeur plus élevée est rencontrée, réduisant ainsi le nombre d'accès en bloc requis.

Qu'est-ce qu'un index de base de données ?

L'indexation est une technique permettant de trier les enregistrements d'un tableau en fonction de plusieurs champs. Crée un index pour un champ spécifique qui contient la valeur du champ et un pointeur vers l'enregistrement correspondant. Cette structure d'index est ensuite triée pour la recherche binaire.

Cependant, les index introduisent une surcharge d'espace disque supplémentaire car ils stockent une table distincte contenant les valeurs de champ et les pointeurs d'enregistrement. Cet espace requis devient important lors de l'indexation de plusieurs champs dans une table, en particulier lors de l'utilisation du moteur MyISAM où le fichier d'index peut dépasser les limites du système de fichiers.

Comment fonctionnent les index

Considérons un exemple de schéma de base de données dans lequel une table contient cinq champs : id (clé primaire), firstName, lastName et emailAddress. Nous supposons qu'il y a 5 millions de lignes avec une taille fixe de 204 octets par ligne et une taille de bloc de 1 024 octets.

Scénario 1 : Champs triés et champs non triés

  • Sans index, une recherche linéaire sur le champ id (qui est trié et qui est le champ clé) nécessite environ 500 000 accès en bloc.
  • Avec un index, une recherche binaire sur le champ id réduit le nombre d'accès bloqués à environ 20.
  • Pour le champ prénom (champ non trié et non clé), la recherche linéaire nécessite 1 000 000 d'accès en bloc.

Scène 2 : Index

  • L'index sur le champ firstName crée une table plus petite avec une taille d'enregistrement de 54 octets.
  • La table d'index nécessite environ 277 778 blocs, tandis que la table d'origine nécessite 1 000 000 de blocs.
  • Une recherche binaire de l'index nécessite 19 accès en bloc, puis 1 autre accès en bloc est nécessaire pour récupérer l'enregistrement réel, pour un total de 20 accès en bloc.

Quand utiliser les index

Les index peuvent améliorer les performances des requêtes sur les champs fréquemment utilisés dans les critères de recherche. Cependant, il est important de prendre en compte les éléments suivants pour déterminer s'il faut indexer un champ :

  • Évitez l'indexation sur des champs de sortie uniquement.
  • Assurez-vous que le champ indexé a une cardinalité élevée, car une cardinalité faible peut annuler l'efficacité de l'index.
  • Considérez les limitations de taille du système de fichiers qui peuvent résulter d'une surindexation.

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