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 ?
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 :
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!