", "!=", etc. sur le champ d'index."/> ", "!=", etc. sur le champ d'index.">
Maison > Article > base de données > Quelles sont les situations dans lesquelles l'index MySQL échoue ?
Instances d'échec d'index : 1. La requête like commence par "%" ; 2. L'index n'est pas utilisé avant et après l'instruction ou 3. L'index de la première colonne n'est pas utilisé dans l'index combiné ; NULL" est utilisé sur la colonne d'index ou l'opération "IS NOT NULL" ; 5. Utilisez "not", "<>", "!=", etc. sur le champ d'index.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
Un index est une structure de base de données spéciale, composée d'une ou plusieurs colonnes dans la table de données. Elle peut être utilisée pour interroger rapidement des enregistrements avec une valeur spécifique dans la table de données. Cette section expliquera en détail la signification, la fonction, les avantages et les inconvénients des index.
Avec les index, vous n'avez pas besoin de lire toutes les informations enregistrées lors de l'interrogation des données, mais uniquement d'interroger les colonnes de l'index. Sinon, le système de base de données lira toutes les informations de chaque enregistrement pour les faire correspondre.
L'index peut être comparé à la séquence phonétique du dictionnaire Xinhua. Par exemple, si vous souhaitez rechercher le mot « ku », si vous n'utilisez pas de séquence phonétique, vous devez le retrouver page par page dans les 400 pages du dictionnaire. Cependant, si vous extrayez le pinyin pour former une séquence phonétique, il vous suffit de le rechercher directement dans la table phonétique de plus de 10 pages. Cela peut faire gagner beaucoup de temps.
Par conséquent, l'utilisation d'index peut considérablement améliorer la vitesse de requête de la base de données et améliorer efficacement les performances du système de base de données.
Plusieurs situations dans lesquelles la requête d'index échoue :
2 Aucun index n'est utilisé avant et après l'instruction or.
Lorsqu'un seul des champs de requête gauche et droit de ou est un index, l'index ne sera invalide que lorsque les champs de requête gauche et droit de ou sont des index
. 3. Index combiné, au lieu d'utiliser la première colonne Index, l'index est invalide.
4. Si le type de colonne est une chaîne, les données doivent être entre guillemets dans la condition, sinon l'index ne sera pas utilisé
Le type de données sera implicitement converti. Si varchar n'est pas placé entre guillemets simples, il peut être automatiquement converti en type int, invalidant l'index et provoquant une analyse complète de la table.
5. Utilisez l'opération IS NULL ou IS NOT NULL sur la colonne d'index.
Les indices n'indexent pas les valeurs nulles, donc de telles opérations ne peuvent pas utiliser d'index et peuvent être gérées d'autres manières, telles que : pour les types numériques, jugez si elle est supérieure à 0, ou pour les types chaîne, définissez une valeur par défaut et jugez si elle est égale à la valeur par défaut. (C'est faux !)
Explication de l'erreur ci-dessus :
Ici, je vais recréer une table emp
Créer un nouvel index
Voir l'index
Exécutez l'instruction SQL
Vous pouvez constater que l'index est utilisé
Résumé : utilisez l'opération IS NULL ou IS NOT NULL sur la colonne d'index, l'index n'échoue pas nécessairement ! ! !
6. Utilisez not, <>, != sur le champ d'index.
L'opérateur d'inégalité n'utilisera jamais d'index, son traitement ne produira donc qu'une analyse complète de la table. Méthode d'optimisation : remplacez key<>0 par key>0 ou key<0.
7. Effectuez des opérations de calcul sur les champs d'index et utilisez des fonctions sur les champs. (L'index est emp(ename,empno,sal))
8. Lorsque la vitesse d'analyse complète de la table est plus rapide que la vitesse de l'index, mysql utilisera l'analyse complète de la table et l'index sera devenir invalide.
Si MySQL estime que l'utilisation d'une analyse de table complète est plus rapide que l'utilisation d'un index, alors n'utilisez pas d'index
[Recommandation associée : Tutoriel vidéo 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!