Je me demande simplement s'il y a quelque chose que je pourrais faire pour que la requête soit plus rapide?Comment faire pour que cette requête s'exécute plus vite?
J'ai cette requête:
SELECT * FROM posts
WHERE posts.exists = 'n'
ORDER BY posts.ratecount DESC
LIMIT 0,100
Prend: 2.47s @ 0100 | 6.18s @ 500,100
Cela fonctionne mais il tend à devenir plutôt lent à mesure que la limite augmente (100,100> 200,100 etc.).
L'utilisation d'un index ne semble pas aider soit:
SELECT * FROM posts
USE INDEX(ratecount_ca)
WHERE posts.exists = 'n'
ORDER BY posts.ratecount DESC
LIMIT 0,100
Prend: 8.59s @ 0100 | 28,98s @ 500,100
Assez étrangement, sans le où il fonctionne parfaitement.
Un index descendant serait très probablement résoudre le problème, mais comme cela ne semble pas encore être implémenté, j'ai besoin d'une autre option. Faire WHERE après sa commande accélérerait la plupart du temps sans doute vers le haut aussi, mais depuis que je suis assez nouveau à SQL je ne sais pas comment faire: <
Cela a fonctionné parfaitement. Merci! : D –
Pouvez-vous poster combien de performance améliorée? Juste pour ma curiosité :) –
Est parti de 8.59s> 0.93s. Assez sûr qu'il pourrait aller plus bas, mais cela fonctionne pour ce que j'en ai besoin. : 0 Assez sûr que c'est parce que vous ne pouvez pas encore modifier l'ordre de l'index même si l'option est là: "Une spécification index_col_name peut se terminer par ASC ou DESC Ces mots-clés sont autorisés pour de futures extensions pour spécifier une valeur d'index ascendant ou descendant Actuellement, ils sont analysés mais ignorés, les valeurs d'index sont toujours stockées dans l'ordre croissant. –