comment optimiser ce query MySQL de wp_options de Wordpress ?

+1 vote
10,109 vues
question 4 Décembre 16 dans Sql Phpmyadmin par atlas (293 points)  

comment optimiser 

SELECT option_name, option_value FROM wp_options WHERE autoload = "yes"; 

avec sent = 223 et examin = 137515 ?

j'ai accès à php my admin et à filezilla

chaque visiteur fait ce query mais il est dans le cache normalement. Pourquoi c'est dans cette liste ?

 

 

commentée 4 Décembre 16 par ladmin (2,272 points)  
c'est dans la liste parce que c'est lent !!! Le serveur met plus de temps à faire ce travail pour le même résultat. Donc votre page s'affiche moins vite. 1) ce n'est pas cool surtout si c'est la faute du programme 2) l'indexation en tient compte maintenant, un site lent est moins bien indexé. OK ?

2 Réponses

+3 votes
réponse 4 Décembre 16 par paco (436 points)  

Rien de plus facile, il n'y a qu'un critère.

  • Allez à PhpmyAdmin ,
  • cliquez sur structure de la table wp_options
  • puis sur la ligne de autoload , cliquez sur index.

Le tour est joué. 

commentée 4 Décembre 16 par ladmin (2,272 points)  
oui mais un brin d'explication serait utile
+1 vote
réponse 4 Décembre 16 par ladmin (2,272 points)  

En effet c'est un cas très simple.

Il n'y a pas de group by, donc vous pouvez ignorer tout ce qui précède le where

Après le where il y a une condition sur un nom de colonne simple.

Si cette colonne ne fait pas partie d'un index existant, le serveur Mysql va devoir parourir toute la table et examiner "examin" lignes pour rendre "sent" lignes de résultats. Au contraire, s'il y a un index, le serveur pourra rapidement pointer sur la sélection et rendre le résultat en examinant nettement moins de lignes.

Quand vous avez repéré cette colonne à indexer, reportez vous à la formulation de Paco pour procéder à l'optimisation.

S'il y avait eu 2 critères du même type séparés par un AND ou un OR, créez pour chaque colonne un index.

S'il y a un order à la fin , traiter la colonne comme pour les critères ci dessus.

Si l'order emploie plusieurs colonnes , créez un seul index avec toutes les colonnes dans le même ordre que dans la requête lente. Avec tout ça, elle deviendra nettement moins lente !

 

Feel free to ask and answer in english

Bienvenue sur les FAQ de 123.fr, posez vos questions ou répondez à celles des autres usagers.

...