Maison  >  Article  >  base de données  >  L'indexation peut-elle accélérer l'interrogation des données dans la table ?

L'indexation peut-elle accélérer l'interrogation des données dans la table ?

(*-*)浩
(*-*)浩original
2019-07-30 14:57:346435parcourir

Tout d'abord, comprenez pourquoi l'indexation augmente la vitesse. Lorsque DB exécute une instruction SQL, la méthode par défaut consiste à analyser la table entière en fonction des conditions de recherche et à ajouter l'ensemble de résultats de recherche s'il rencontre des conditions correspondantes.

L'indexation peut-elle accélérer l'interrogation des données dans la table ?

Si nous ajoutons un index à un certain champ, la requête localisera d'abord le nombre de lignes avec une valeur spécifique dans la liste d'index, réduisant considérablement le nombre de correspondances de parcours Le nombre de lignes peut augmenter considérablement la vitesse des requêtes. (Apprentissage recommandé : Tutoriel vidéo MySQL)

Pour ajouter un index, première requête dans la liste d'index, et notre liste d'index est la structure de données d'une classe B tree.La complexité temporelle de la requête est O(log2N).Il sera très rapide de localiser la ligne de valeur spécifique, donc la vitesse de la requête sera très rapide.

Pourquoi B+-tree est-il plus approprié que B-tree pour l'indexation de fichiers et l'indexation de bases de données de systèmes d'exploitation dans des applications pratiques ?

1) Le coût de lecture et d'écriture sur disque de B+-tree est inférieur

Les nœuds internes de B+-tree n'ont pas de pointeurs vers des informations spécifiques de mots-clés. Par conséquent, ses nœuds internes sont plus petits que le B-tree. Si tous les mots-clés du même nœud interne sont stockés dans le même bloc disque, plus le bloc disque peut contenir de mots-clés. Plus les mots-clés à rechercher sont lus dans la mémoire en même temps. Relativement parlant, le nombre de lectures et d’écritures d’E/S est réduit.

Par exemple, supposons qu'un bloc de disque dans le disque contient 16 octets, qu'un mot-clé fait 2 octets et qu'un pointeur d'informations spécifique à un mot-clé contient 2 octets. Les nœuds internes d'un arbre B d'ordre 9 (un nœud peut avoir jusqu'à 8 mots-clés) nécessitent 2 lecteurs de disque. Les nœuds internes de l’arborescence B+ ne nécessitent qu’une seule vitesse de disque. Lorsque les nœuds internes doivent être lus dans la mémoire, le B-tree nécessite un temps de recherche de bloc disque de plus (dans le cas d'un disque, il s'agit du temps de rotation du disque) que l'arbre B+.

2) L'efficacité des requêtes de B+-tree est plus stable

Parce que le point non terminal n'est pas le nœud qui pointe finalement vers le contenu du fichier, mais seulement les mots-clés dans l’index des nœuds feuilles. Par conséquent, toute recherche par mot-clé doit emprunter un chemin allant du nœud racine au nœud feuille. La longueur du chemin de toutes les requêtes par mot-clé est la même, ce qui entraîne une efficacité de requête égale pour chaque donnée.

Index

Utilisez des index pour accéder rapidement à des informations spécifiques dans une table de base de données. Un index est une structure qui trie les valeurs d'une ou plusieurs colonnes d'une table de base de données, comme la colonne de nom de famille (lname) de la table des employés. Si vous souhaitez rechercher un employé spécifique par son nom de famille, un index vous aidera à obtenir ces informations plus rapidement que si vous deviez rechercher toutes les lignes du tableau.

Remarque : Toutes les bases de données n'utilisent pas les index de la même manière.

En règle générale, vous ne devez créer un index sur une table que si les données de la colonne indexée sont fréquemment interrogées. Les index occupent de l'espace disque et ralentissent l'ajout, la suppression et la mise à jour de lignes. Dans la plupart des cas, les avantages en termes de rapidité d’un index pour la récupération de données l’emportent largement sur ses avantages.

Pour plus d'articles techniques liés à MySQL, veuillez visiter la colonne Tutoriel MySQL pour apprendre !

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