Plus loin dans cette section, des exemples pratiques et faciles à comprendre seront utilisés pour illustrer le déclenchement réel de l'index, afin d'optimiser la stratégie utilisée lors de l'ajout d'index.
1. Type d'index
1.1 Index B-tree
Remarque : il est appelé index btree d'un point de vue large, ils utilisent tous des arbres équilibrés, mais en termes de. implémentation spécifique,Chaque moteur est légèrement différent,
Par exemple, à proprement parler, le moteur NDB utilise T-tree, Myisam et innodb utilise l'index B-tree par défaut
Mais abstraitement- - -Le système B-tree peut être compris comme une « structure de recherche rapide triée ». Pour plus d'analyse, voir Type Mysql-index-BTree [Simplifié]
Indice de hachage 1.2
Dans la table mémoire, la valeur par défaut est l'index de hachage, La complexité théorique du temps de requête du hachage est O(1)
Question : Puisque la recherche de hachage est si efficace, pourquoi ne pas tous utiliser l'index de hachage ?
Réponse :
1 : Le résultat calculé par la fonction de hachage est aléatoire. Si les données sont placées sur le disque, par exemple, la clé primaire est id, alors à mesure que l'identifiant grandit, Les lignes correspondant à l'identifiant sont placées aléatoirement sur le disque
2 : Impossible d'optimiser les requêtes de plage
3 : Impossible d'utiliser l'index de préfixe. La valeur de la colonne de champ "hellopworld", et ajouter l'index, la requête xx=helloword, vous pouvez naturellement utiliser l'index, xx=hello, vous pouvez également utiliser l'index (index de préfixe de gauche). Parce que la relation entre hash('helloword') et hash('hello') est toujours aléatoire. En fait, c'est parce que HASH est précis
4 : Le tri ne peut pas être optimisé.
5. : Le support des lignes est requis. C'est-à-dire que pour obtenir l'emplacement des données via l'index, vous devez revenir à la table pour obtenir les données
2. Malentendus courants sur les index btree.
2.1 où les index sont ajoutés aux colonnes couramment utilisées dans les conditions
Exemple : où cat_id=3 et price>100 ; //Requête de la troisième colonne, produits de plus de 100 yuans
Erreur : sur cat_id, et, Les index sont ajoutés au prix.
Erreur : seul cat_id ou Price index peut être utilisé, car il s'agit d'une structure d'index indépendante, et un seul peut être utilisé en même temps. Pour une description détaillée de l'arrangement, veuillez consulter Mysql-Intuitive Illustration of Index Structure
2.2 Pour que l'index fonctionne sur un index multi-colonnes, il doit répondre à l'exigence de préfixe gauche .
Erreur : après avoir créé un index sur plusieurs colonnes, l'index fonctionnera quelle que soit la colonne interrogée
Prenons index(a,b,c) comme exemple,
3. Résumé :
1. L'ordre de l'index conjoint suit le principe du préfixe gauche et doit être cohérent couche par couche. La condition Where dans l'instruction SQL a. aucun contexte, comme les exemples de requête 4 et 5 ci-dessus
2 . Impliquant des requêtes de plage comme , l'index après cette requête ne peut pas être utilisé comme 7
3. d'imbrication d'une couche à la fois, le tri par ordre est utilisé et le tri par ordre ne participe pas à la condition Where, faites attention au problème de [where field a order by field a]. proposition, car elle est déjà égale à a, quelle sous-commande doit être passée
4 Dans le où dans la requête de sélection, il n'y a pas de conditions multiples La commande, mais vous devez faire attention à la commande quand. en ajoutant l'index, pareil.
5. Comment fonctionne le groupe en regroupement : Premier tri order_by, créez une table temporaire, si vous créez un index, vous pouvez éviter d'avoir à créer une table temporaire, donc l'index est valide pour le groupe
Ce qui précède est le contenu de la stratégie d'optimisation de l'index Mysql. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !