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 2 3 4 |
|
1 |
|
1 2 3 |
|
1 2 |
|
5. Autres commandes
1 2 3 4 5 6 7 8 9 10 |
|
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 (<>, !=), 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!