Maison >base de données >tutoriel mysql >Comment l'indexation de bases de données améliore-t-elle les performances des requêtes et quand doit-elle être utilisée ?

Comment l'indexation de bases de données améliore-t-elle les performances des requêtes et quand doit-elle être utilisée ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-23 15:38:14769parcourir

How Does Database Indexing Improve Query Performance and When Should It Be Used?

Index de base de données : principe de fonctionnement et scénarios d'application

L'indexation de base de données est une technologie qui organise les données d'une manière spécifique pour améliorer les performances des requêtes de base de données. À mesure que la taille des bases de données augmente, l’indexation devient essentielle car elle accélère considérablement la recherche et la récupération des données.

Importance de l'indice

Lorsque les données sont stockées sur le disque, elles sont divisées en blocs de données. L'accès à ces blocs de données nécessite une lecture complète de l'intégralité du bloc, ce qui prend du temps. La recherche de données non triées nécessite une recherche linéaire, qui implique l'analyse de gros blocs de données et est inefficace.

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

Les indices permettent des recherches de données plus rapides en triant les données sur des champs spécifiques. Lorsqu'un index est créé sur un champ, il crée une structure de données supplémentaire contenant la valeur du champ et son pointeur d'enregistrement correspondant. Cette structure d'index est triée afin que des recherches binaires puissent être effectuées, améliorant considérablement les performances.

Comment fonctionnent les index

Considérez l'exemple de table de base de données suivant :

字段名 数据类型 大小
id 无符号INT 4 字节
firstName Char(50) 50 字节
lastName Char(50) 50 字节
emailAddress Char(100) 100 字节

Supposons que nous ayons une table avec 5 000 000 d'enregistrements utilisant le moteur MyISAM (la taille de bloc par défaut est de 1 024 octets). Le nombre moyen d'accès aux blocs de données requis pour rechercher une valeur d'ID (champ clé trié) est de 20, ce qui est bien en dessous des 500 000 accès requis pour une recherche linéaire.

Cependant, la recherche d'un champ non clé non trié tel que prénom nécessite d'analyser l'intégralité de la table (1 000 000 d'accès bloqués). C'est là que les index entrent en jeu.

L'index de firstName aura la structure suivante :

字段名 数据类型 大小
firstName Char(50) 50 字节
(记录指针) 特殊 4 字节

L'index permet une recherche binaire qui nécessite en moyenne seulement 20 accès en bloc pour récupérer la valeur firstName. Il s'agit d'une énorme amélioration par rapport aux 1 000 000 d'accès requis dans une table non indexée.

Quand utiliser les index

Bien que l'indexation puisse améliorer les performances des requêtes, elle entraîne également une surcharge (espace disque et temps de traitement supplémentaires). Les indices doivent être choisis avec soin en fonction des facteurs suivants :

  • Champs utilisés dans la clause WHERE : Les champs d'indexation fréquemment utilisés pour le filtrage peuvent améliorer considérablement les performances des requêtes.
  • Cardinalité : Les champs avec une cardinalité élevée (plus de valeurs uniques) sont plus adaptés à l'indexation car ils réduisent le nombre d'enregistrements renvoyés, rendant les recherches binaires plus efficaces.
  • Champs inutilisés dans la sortie : Éviter les champs d'indexation utilisés uniquement pour la sortie peut économiser de l'espace disque et réduire le temps de traitement lors des opérations d'insertion et de suppression.

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