Maison > Article > base de données > Introduction à l'index MySQL
Qu'est-ce qu'un index ?
Un index est une structure de données qui obtient efficacement des données.
Type d'index
FULLTEXT, (HASH, BTREE [deux principalement utilisés par mysql]), RTREE.
1. FULLTEXT
est un index de texte intégral, actuellement pris en charge uniquement par le moteur MyISAM. Il peut être utilisé dans CREATE TABLE, ALTER TABLE et CREATE INDEX, mais actuellement, seuls les index de texte intégral peuvent être créés sur les colonnes CHAR, VARCHAR et TEXT.
L'index de texte intégral n'est pas né avec MyISAM. Il semble résoudre le problème de la faible efficacité des requêtes basées sur du texte flou telles que WHERE name LIKE "%word%".
(Recommandation de didacticiel vidéo d'apprentissage gratuit : tutoriel vidéo MySQL)
2 HASH
En raison du caractère unique du HASH (presque 100 % unique) et d'une clé similaire. valeurs La bonne forme peut être utilisée comme index.
L'index HASH peut être localisé une seule fois et n'a pas besoin d'être recherché couche par couche comme un index arborescent, il est donc extrêmement efficace. Cependant, cette efficacité est conditionnelle, c'est-à-dire qu'elle n'est efficace que dans les conditions "=" et "in", et n'est toujours pas efficace pour les requêtes de plage, le tri et les index combinés.
3. BTREE
L'index BTREE est une sorte de méthode qui stocke la valeur de l'index dans une structure de données arborescente (arbre binaire) selon un certain algorithme. de l’arbre. En partant de la racine, parcourez les nœuds dans l’ordre pour obtenir la feuille. Il s'agit du type d'index par défaut et le plus couramment utilisé dans MySQL.
4. RTREE
RTREE est rarement utilisé dans MySQL et ne prend en charge que le type de données géométriques. Les seuls moteurs de stockage prenant en charge ce type sont MyISAM, BDb, InnoDb, NDb et. Archive.
Par rapport au BTREE, l'avantage du RTREE est la recherche par plage.
Type d'index
Index normal : uniquement requête accélérée
Index unique : requête accélérée + valeur de colonne unique (peut avoir null)
Index de clé primaire : accélération de la requête + valeur de colonne unique (ne peut pas avoir null) + une seule dans la table
Index combiné : plusieurs valeurs de colonnes forment un index, spécialement utilisé pour la recherche combinée, son efficacité est supérieur à la fusion d'index
Index de texte intégral : segmentez le contenu du texte et recherchez
Utilisez l'index
Créer un index
1 --创建普通索引CREATE INDEX index_name ON table_name(col_name); 2 --创建唯一索引CREATE UNIQUE INDEX index_name ON table_name(col_name); 3 --创建普通组合索引CREATE INDEX index_name ON table_name(col_name_1,col_name_2); 4 --创建唯一组合索引CREATE UNIQUE INDEX index_name ON table_name(col_name_1,col_name_2);<.>2. Créez un index en modifiant la structure de la table
ALTER TABLE table_name ADD INDEX index_name(col_name);3 Spécifiez directement l'index lors de la création de la table
CREATE TABLE table_name ( ID INT NOT NULL,col_name VARCHAR (16) NOT NULL,INDEX index_name (col_name) );4.
--直接删除索引DROP INDEX index_name ON table_name; --修改表结构删除索引ALTER TABLE table_name DROP INDEX index_name;
5. Autres commandes
- 查看表结构 desc table_name; - 查看生成表的SQL show create table table_name; - 查看索引 show index from table_name; - 查看执行时间 set profiling = 1; SQL... show profiles;
Raisons de l'échec de l'index
1.
2. Le non-respect de la règle de préfixe optimale peut également entraîner un échec de l'index. 3. Effectuer (un calcul, une fonction, une conversion de type (automatique ou manuelle)) sur l'index entraînera l'échec de l'index et entraînera une analyse complète de la table. 4. MySQL ne peut pas utiliser l'index lorsqu'il est différent de (a8093152e673feb7aba1828c43532094, !=), ce qui entraîne une analyse complète de la table. 5. L'index ne peut pas être utilisé même s'il est nul ou non. 6. L'utilisation d'un commutateur générique comme ('%abc') entraînera un échec de l'index et une analyse complète de la table. 7. L'index de chaîne sans guillemets simples sera invalide. 8. Utilisez ou moins, car la connexion avec ou entraînera un échec de l'index. 9. Utilisez la requête select * et essayez d'utiliser l'index de couverture.Spécification de l'index mysql
1 [Obligatoire] Les champs ayant des caractéristiques uniques en entreprise, même s'ils sont une combinaison de plusieurs champs, doivent être intégrés dans un index unique. (Remarque : Ne pensez pas que l'index unique affecte la vitesse d'insertion. Cette perte de vitesse peut être ignorée,
mais l'amélioration de la vitesse de recherche est évidente ; de plus, même si un contrôle de vérification très complet est effectué à la couche application, tant qu'il n'y a pas d'index unique, selon la loi de Murphy, des données sales doivent être générées) 2. [Obligatoire] La jointure de plus de trois tables est interdite. Les types de données des champs qui doivent être joints doivent être absolument cohérents ; lors de l'exécution de requêtes liées à plusieurs tables, il est garanti que les champs liés doivent avoir des index. (Remarque : même si vous rejoignez une table double, vous devez faire attention aux index de table et aux performances SQL.)
(Remarque : la longueur de l'index et la discrimination sont une paire de contradictions. Généralement, pour les données de type chaîne, l'index d'une longueur de 20 aura une discrimination de plus de 90 %,
(Remarque : le fichier d'index possède la fonction de correspondance de préfixe la plus à gauche de B-Tree. Si la valeur à gauche n'est pas déterminée, cet index ne peut pas être utilisé.)
tutoriel 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!