Maison > base de données > tutoriel mysql > le corps du texte

Qu'est-ce qu'un index non clusterisé dans MySQL ?

coldplay.xixi
Libérer: 2020-06-30 17:17:33
original
2447 Les gens l'ont consulté

L'index non clusterisé dans MySQL signifie que le stockage de l'index et le stockage des données sont séparés, c'est-à-dire que si l'index est trouvé mais que les données ne sont pas trouvées, vous devez interroger. la table est à nouveau basée sur la valeur de l'index, c'est-à-dire la clé primaire. Index non clusterisé L'index de cluster est également appelé index auxiliaire.

Qu'est-ce qu'un index non clusterisé dans MySQL ?

L'index non clusterisé dans mysql est :

Le stockage de l'index et le stockage des données sont également séparés. C'est-à-dire que si l'index est trouvé mais que les données ne sont pas trouvées, vous devez à nouveau interroger la table en fonction de la valeur (clé primaire) de l'index. Les index non clusterisés sont également appelés index auxiliaires.

Un exemple

Ci-dessous, nous créons une table étudiante et effectuons trois requêtes pour illustrer quand il s'agit d'un index clusterisé et quand ce n'est pas le cas.

create table student (
    id bigint,
    no varchar(20) ,
    name varchar(20) ,
    address varchar(20) ,
    PRIMARY KEY (`branch_id`) USING BTREE,
    UNIQUE KEY `idx_no` (`no`) USING BTREE
)ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
Copier après la connexion

Recommandations d'apprentissage associées : Tutoriel vidéo MySQL

La première méthode consiste à interroger et à obtenir directement toutes les données de champ en fonction de la clé primaire. À l'heure actuelle, la clé primaire est l'index de cluster d'agrégation, car le nœud feuille d'index correspondant à la clé primaire stocke les valeurs de tous les champs avec id=1.

select * from student where id = 1
Copier après la connexion

La deuxième méthode consiste à interroger le numéro et le nom en fonction du numéro. Le numéro lui-même est un index unique, mais la colonne interrogée contient le numéro et le nom de l'étudiant. L'index numérique est atteint, les données du nœud indexé sont stockées dans l'ID de clé primaire et doivent être à nouveau interrogées en fonction de l'ID de clé primaire, donc dans cette requête, no n'est pas un index clusterisé

select no,name from student where no = 'test'
Copier après la connexion

Dans la troisième manière, nous interrogeons en fonction du numéro Numéro (quelqu'un peut vous demander si vous connaissez le numéro mais doit quand même interroger ? Oui, vous devrez peut-être vérifier si le numéro existe dans la base de données). Lorsque ce type de requête atteint l'index numérique, le nombre est renvoyé directement, car les données requises sont l'index, pas besoin de renvoyer une requête de table, dans ce scénario, l'index clusterisé n'est pas

select no from student where no = 'test'
Copier après la connexion

Résumé :

La clé primaire doit être l'index clusterisé, MySQL的InnoDB Il doit contenir une clé primaire Même si le développeur ne la définit pas manuellement, un index unique le sera. Être utilisé. S'il n'y a pas d'index unique, l'identifiant d'une ligne à l'intérieur de la base de données sera utilisé comme index de clé primaire. D'autres index ordinaires doivent distinguer les scénarios SQL. Lorsque la colonne est l'index lui-même, nous appelons le. index ordinaire dans ce scénario, également appelé index clusterisé. Le moteur MyisAM n'a pas d'index clusterisé.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal