Maison > Article > base de données > Dans quelles circonstances l’index mysql échouera-t-il ?
Plusieurs cas d'échec d'un index mysql : 1. S'il y a ou dans la condition, même s'il y a une condition avec un index, il ne sera pas utilisé 2. Pour un index multi-colonnes, si le ; la première partie n'est pas utilisée, l'index ne sera pas utilisé ; 3. Si la requête similaire commence par %, l'index n'est pas valide 4. Lorsque le type de champ est une chaîne, les données de la condition ne sont pas mises entre guillemets ;
(Tutoriel recommandé : Tutoriel vidéo mysql)
L'index ne prend pas effet tout le temps Par exemple, les situations suivantes entraîneront l'échec de l'index :
1. S'il y a ou dans la condition, même s'il y a une condition avec un index, il ne sera pas utilisé (c'est pourquoi vous devez utiliser ou le moins possible) : Si vous souhaitez utiliser ou et que vous souhaitez que l'index prenne effet, vous ne pouvez ajouter un index qu'à chaque colonne dans la condition ou
2. Pour les index multi-colonnes, si ce n'est pas la première partie utilisée, l'index ne sera pas utilisé
3. La requête like commence par %, et l'index n'est pas valide ; lorsque le préfixe like n'a pas %, le suffixe a %, l'index est valide.
4. Si le type de colonne est une chaîne, alors il doit Les données doivent être citées entre guillemets, sinon l'index ne sera pas utilisé
5. Si mysql estime en utilisant l'analyse de la table complète est plus rapide que l'utilisation de l'index, alors n'utilisez pas l'index
De plus, vérifiez l'utilisation de l'index
afficher le statut comme 'Handler_read%'; Tout le monde peut prêter attention à : handler_read_key : Plus la valeur est élevée, mieux c'est. Plus la valeur est élevée, plus le nombre de requêtes utilisant l'index est élevé. handler_read_rnd_next : Plus la valeur est élevée. valeur, la requête est inefficace
2) La colonne de début n'est pas utilisée dans la condition de requête
3) Le nombre de requêtes est la majorité des grandes tables , qui devrait être supérieur à 30 %.
4) L'index lui-même n'est pas valide
5) Les conditions de requête utilisent des fonctions dans indexer les colonnes ou effectuer des opérations sur les colonnes d'index, les opérations incluent (+, -, *, /,!, etc.) Mauvais exemple : sélectionnez * à partir du test où id-1=9 ; Exemple correct : sélectionnez * à partir du test où id ; =10 ;
6) Requête sur une petite table
7) Invite à ne pas utiliser l'index
8) Les statistiques sont irréelles
9) Calcul du CBO et coût d'indexation trop de situation. En fait, cela inclut également la situation ci-dessus, ce qui signifie que le bloc occupé par la table est plus petit que l'index.
10) La conversion implicite provoque un échec de l'index. Cela doit être pris au sérieux. C'est également une erreur courante dans le développement puisque le champ de table tu_mdn est défini comme varchar2. (20), mais lors de l'interrogation, le champ est transmis à Oracle sous la forme d'un type numérique avec une condition Where, ce qui entraînera l'échec de l'index : select * from test which tu_mdn=13333333333 ; où tu_mdn ='13333333333'; )
13, comme "%_" signe pour cent en premier
14. Le tableau n'est pas analysé
15, fait référence séparément à la colonne d'index qui n'est pas la première position dans l'index composite
16, lorsque le. Le champ de caractères est un nombre. N'ajoutez pas de guillemets dans la condition Where
17. Effectuez des opérations sur les colonnes d'index. >
18, pas dedans, n'existe pas
19, lorsque la variable utilise les heures. variable, et le champ de table utilise la variable de date ou vice versa.
20, l'index B-tree n'ira pas s'il est nul, n'est pas nul ira, l'index bitmap ira s'il est nul, n'est pas nul
21. L'index conjoint n'est pas nul tant que les colonnes d'index sont créées (sans ordre particulier, il doit être utilisé avec le). première colonne de l'index. Lorsque la première condition d'indexation est nulle, les autres colonnes indexées peuvent être nulles (mais toutes les colonnes doivent satisfaire à null), ou = une valeur lorsque la première position d'indexation est = une valeur, les autres colonnes d'index peuvent l'être dans n'importe quel cas (y compris est null = une valeur), et l'index ira dans les deux cas ci-dessus. Cela n'ira pas dans d'autres circonstances.
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!