Maison  >  Article  >  base de données  >  MySQL a-t-il des index ?

MySQL a-t-il des index ?

青灯夜游
青灯夜游original
2022-11-08 19:28:362491parcourir

mysql a des index. Il existe généralement deux manières d'accéder aux données de ligne d'une table de base de données dans MySQL : 1. Accès séquentiel, c'est-à-dire effectuer une analyse complète de la table et la parcourir ligne par ligne du début à la fin jusqu'à ce que les données cibles répondent aux exigences. Les conditions se trouvent dans les données de ligne non ordonnées ; 2. L'accès à l'index consiste à accéder directement aux lignes d'enregistrement de la table en parcourant l'index. La structure des données de l'index MySQL peut être divisée en deux types : BTree et Hash, et BTree peut être divisée en BTree et B+Tree.

MySQL a-t-il des index ?

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Qu'est-ce qu'un index MySQL ?

Un index est une structure de base de données spéciale, composée d'une ou plusieurs colonnes dans la table de données. Elle peut être utilisée pour interroger rapidement des enregistrements avec une valeur spécifique dans la table de données. Cette section expliquera en détail la signification, la fonction, les avantages et les inconvénients des index.

Avec les index, vous n'avez pas besoin de lire toutes les informations enregistrées lors de l'interrogation des données, mais uniquement d'interroger les colonnes de l'index. Sinon, le système de base de données lira toutes les informations de chaque enregistrement pour les faire correspondre.

L'index peut être comparé à la séquence phonétique du dictionnaire Xinhua. Par exemple, si vous souhaitez rechercher le mot « ku », si vous n'utilisez pas de séquence phonétique, vous devez le retrouver page par page parmi les 400 pages du dictionnaire. Cependant, si vous extrayez le pinyin pour former une séquence phonétique, il vous suffit de le rechercher directement dans la table phonétique de plus de 10 pages. Cela peut faire gagner beaucoup de temps.

Par conséquent, l'utilisation d'index peut considérablement améliorer la vitesse de requête de la base de données et améliorer efficacement les performances du système de base de données.

Pourquoi utiliser l'index

Un index est une table de correspondance entre les valeurs de colonnes et les lignes d'enregistrement établies dans un certain ordre en fonction d'une ou plusieurs colonnes du tableau. Colonne d'index. Table ordonnée qui a une correspondance biunivoque avec les lignes d'enregistrement de la table d'origine.

Index est un objet de base de données très important dans MySQL. Il constitue la base de la technologie d'optimisation des performances des bases de données et est souvent utilisé pour obtenir une récupération rapide des données.

Dans MySQL, il existe généralement deux manières d'accéder aux données de ligne d'une table de base de données :

1) Accès séquentiel

L'accès séquentiel consiste à effectuer une analyse complète de la table, en la parcourant ligne par ligne du début à la fin. se terminer jusqu'à ce qu'il n'y ait pas de recherche. Recherchez les données cibles qui remplissent les conditions dans les données de ligne dans l'ordre.

L'accès séquentiel est relativement simple à mettre en œuvre, mais lorsqu'il y a une grande quantité de données dans le tableau, l'efficacité est très faible. Par exemple, lors de la recherche d'une petite quantité de données parmi des dizaines de millions de données, l'utilisation d'un accès séquentiel traversera toutes les données, ce qui prendra beaucoup de temps et affectera évidemment les performances de traitement de la base de données.

2) Accès à l'index

L'accès à l'index est un moyen d'accéder directement aux lignes d'enregistrement de la table en parcourant l'index.

Le principe de l'utilisation de cette méthode est de créer un index sur la table. Après avoir créé l'index sur la colonne, lors de la recherche de données, vous pouvez trouver directement l'emplacement de la ligne d'enregistrement correspondante en fonction de l'index sur la colonne, ainsi trouver rapidement les données. L'index stocke les pointeurs vers les valeurs de données des colonnes spécifiées, en triant ces pointeurs selon l'ordre de tri spécifié.

Par exemple, dans la table d'informations de base de l'étudiant tb_students, si un index est établi sur la base de student_id, le système créera une table de mappage de la colonne d'index à l'enregistrement réel. Lorsque l'utilisateur a besoin de trouver les données avec student_id 12022, le système trouve d'abord l'enregistrement sur l'index student_id, puis trouve directement la ligne de données via la table de mappage et renvoie la ligne de données. Étant donné que la vitesse d'analyse de l'index est généralement bien supérieure à la vitesse d'analyse des lignes de données réelles, l'utilisation de l'index peut grandement améliorer l'efficacité de la base de données.

En bref, sans utiliser d'index, MySQL doit lire toute la table en commençant par le premier enregistrement jusqu'à trouver les lignes pertinentes. Plus la table est grande, plus l'interrogation des données prend du temps. Si la colonne interrogée dans la table possède un index, MySQL peut accéder rapidement à un emplacement pour rechercher le fichier de données sans avoir à examiner toutes les données, ce qui permettra de gagner beaucoup de temps.

Classification des index MYSQL

1. Index ordinaire et index unique

  • Index ordinaire : Le type d'index de base dans MySQL, qui permet d'insérer des valeurs en double et des valeurs nulles​​dans les colonnes qui définissent l'index

  • Index unique : La valeur de la colonne d'index doit être unique, mais les valeurs nulles sont autorisées

    • S'il s'agit d'un index combiné, la combinaison des valeurs de colonne doit être unique
    • L'index de clé primaire est un index unique spécial, et les valeurs nulles ne sont pas autorisées

2 Index à une seule colonne et index combiné

  • Index à une seule colonne : un index ne contient qu'une seule colonne et un. la table peut avoir plusieurs index à une seule colonne
  • Index combiné : Un index créé sur une combinaison de plusieurs champs de la table
    • Uniquement L'index ne sera utilisé que lorsque les champs de gauche de ces champs sont utilisés dans les conditions de requête (préfixe le plus à gauche principe)

3. Index de texte intégral

  • Le type de l'index de texte intégral est texte intégral
  • sur la colonne qui définit l'index Prend en charge la recherche de texte intégral de valeurs, permettant l'insertion de valeurs en double et valeurs nulles dans ces colonnes d'index
  • Des index de texte intégral peuvent être créés sur des colonnes de type char, varchar et texte

Index spatial

4.
  • L'index spatial est un index établi sur des champs de types de données spatiales

  • Il existe 4 types de données spatiales dans MySQL, à savoir Geometry, Point, Linestring et Polygon

  • MySQL utilise le mot-clé Spatial pour développer, vous permet pour créer un index spatial en utilisant une syntaxe similaire à la création d'un index régulier

  • Créez une colonne d'index spatial qui n'autorise pas les valeurs nulles et ne peut être créée que dans les tables MyISAM.

5. Index de préfixe

  • Lors de la création d'un index sur des colonnes de type char, varchar et texte, vous pouvez spécifier la longueur de la colonne d'index

Structure des données de l'index MySQL

Données de Index MySQL La structure peut être divisée en deux types : BTree et Hash, et BTree peut être divisé en BTree et B+Tree.

Hash : utilisez la table de hachage pour stocker des données, les colonnes d'index de stockage de clés et les enregistrements de ligne de stockage de valeur ou les adresses de disque de ligne.

Hash ne prend en charge que les requêtes à valeur égale ("=", "IN", "") et ne prend en charge aucune requête de plage (la raison est qu'il n'y a aucune connexion entre chaque clé de la requête Hash). C'est très efficace et la complexité temporelle est O(1).

BTree : Appartient à un arbre à plusieurs fourchettes, également connu sous le nom d'arbre de recherche équilibré à plusieurs voies.

Propriétés :

  • Les nœuds de BTree stockent plusieurs éléments (valeur clé - données/adresse des nœuds enfants)
  • Les valeurs clés des nœuds BTree sont disposées par ordre non décroissant
  • Tous les nœuds feuilles de BTree sont situé dans la même couche (avec la même profondeur)

MySQL a-t-il des index ?

Processus de requête, par exemple : Sélectionnez * dans la table où id = 6 

MySQL a-t-il des index ?

Lacunes de BTree :

  • ne prend pas en charge la recherche rapide de requêtes de plage (chaque requête doit repartir du nœud racine Traverse)
  • Le stockage des données sur tous les nœuds entraînera un stockage de données sur disque dispersé et une efficacité réduite des requêtes

B+Tree : Sur la base de BTree, BTree a été optimisé : seuls les nœuds feuilles seront stockés Valeur clé - les données, les nœuds non-feuilles stockent uniquement les valeurs clés et les adresses des nœuds enfants ; les nœuds feuilles sont connectés à l'aide de pointeurs bidirectionnels pour former une liste chaînée ordonnée bidirectionnelle.

MySQL a-t-il des index ?

Requête de valeur égale, par exemple : Sélectionnez * dans la table où l'identifiant = 8 ;

MySQL a-t-il des index ?

Requête de plage, par exemple : Sélectionnez * dans la table où l'identifiant est compris entre 8 et 22 ;

MySQL a-t-il des index ?

B+ Avantages de l'arbre :

  • Assure une recherche rapide de requêtes équivalentes et de requêtes de plage
  • Un seul nœud stocke plus d'éléments, réduisant ainsi le nombre de requêtes IO

[Recommandations associées : Tutoriel vidéo MySQL]

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