Maison > Article > base de données > MySQL a-t-il des index ?
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.
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 nullesdans 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
2 Index à une seule colonne et index combiné
3. Index de texte intégral
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
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 :
Processus de requête, par exemple : Sélectionnez * dans la table où id = 6
Lacunes de BTree :
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.
Requête de valeur égale, par exemple : Sélectionnez * dans la table où l'identifiant = 8 ;
Requête de plage, par exemple : Sélectionnez * dans la table où l'identifiant est compris entre 8 et 22 ;
B+ Avantages de l'arbre :
[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!