Maison  >  Article  >  base de données  >  Quelle est la raison de l’échec de l’index de MySQL ?

Quelle est la raison de l’échec de l’index de MySQL ?

WBOY
WBOYavant
2023-05-29 21:22:293106parcourir

1. in query

in query est une méthode de requête couramment utilisée dans MySQL, qui peut être utilisée dans une seule requête Faites correspondre plusieurs valeurs ou plages. Par exemple :

SELECT * FROM table WHERE col1 IN (1,2,3);

Cette instruction SQL trouvera toutes les lignes égales à 1, 2 ou 3 dans la colonne col1. Pendant le traitement de la requête in, MySQL comparera chaque valeur entre parenthèses avec l'index, de sorte que la requête in aura un certain impact sur l'efficacité de l'index.

2. Raisons de l'échec de l'index

  1. La plage de requêtes est trop grande

    #🎜 🎜## 🎜🎜#
  2. Si la plage de la requête de données est trop grande, MySQL considérera qu'il est plus efficace de retrouver les données via une analyse complète de la table que d'utiliser un index. Par exemple, une table contient 100 000 enregistrements. Si la plage de requête dépasse plus de 25 % des enregistrements, MySQL choisira une analyse complète de la table au lieu d'utiliser l'index pour la requête. Par conséquent, si la plage de requêtes est trop grande, cela peut entraîner un échec de l'index.

    Le nombre de valeurs est trop élevé
  1. MySQL considérera qu'une analyse complète de la table est plus efficace que de rechercher les données via l'index, lorsqu'il y a trop de valeurs qui doivent correspondre dans la requête. À l’heure actuelle, l’indexation n’a pas grand sens. Par conséquent, lors de l'utilisation dans des requêtes, vous devez essayer de réduire autant que possible le nombre de valeurs correspondantes.

3. Méthode d'optimisation

    Optimisation de l'instruction de requête
  1. #🎜🎜 #

    Réduisez autant que possible la portée de la requête et le nombre de valeurs qui doivent correspondre. Vous pouvez optimiser l'instruction de requête via les méthodes suivantes :
a. la condition Where de la requête et utilisez le connecteur logique AND lorsque cela est possible, réduisez l'utilisation du connecteur logique OR.

b. Utilisez la requête par plage plutôt que dans la requête. Par exemple, utilisez les opérateurs BETWEEN et AND au lieu de IN.

c. Réduisez autant que possible la liste de valeurs dans la requête entrante et utilisez des sous-requêtes pour l'optimiser. Par exemple :

SELECT * FROM table WHERE col1 IN (SELECT col1 FROM table WHERE col2='xxx');

Ajouter un index
  1. Lors de la construction de la table, définissez les colonnes qui doivent être interrogée en tant que colonne d'index peut améliorer l'efficacité de la requête et réduire autant que possible l'utilisation de la requête.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer