4 votes

Pourquoi ma requête MySQL se bloque-t-elle lorsqu'elle utilise un ORDER BY avec une LIMITE supérieure à 250 ?

Voici ma question. Elle fonctionne très rapidement. J'ai un index sur movies.movieid, movie.title, collectors_collections.barcode, et collectors_collections.username (ainsi que des index sur d'autres tables) :

SELECT *
FROM collectors_collections
JOIN movieitemdetails ON collectors_collections.barcode = movieitemdetails.barcode
JOIN movies ON movieitemdetails.movieid = movies.movieid
JOIN barcodes ON collectors_collections.barcode = barcodes.barcode
WHERE (wishlist = 'NO' OR wishlist IS NULL) AND barcodes.type = 'movie' AND username = 'ethanwa'
ORDER BY movies.title LIMIT 250

Dès que je change la LIMITE en ceci :

ORDER BY movies.title LIMIT 251

J'ai un blocage constant dans la requête dont je ne peux pas sortir à moins de la tuer. Quelle pourrait être la cause de ce problème et comment puis-je le résoudre ? Y a-t-il un paramètre qui m'échappe ? Un index ? Quelque chose de corrompu ?

2voto

Ethan Allen Points 1178

J'ai découvert que le blocage était dû au fait que MySQL n'avait pas alloué assez de mémoire, ce qui faisait que toutes les tables étaient envoyées sur le disque, ce qui prenait une éternité. Il suffit d'augmenter la quantité de mémoire dans les paramètres de MySQL pour résoudre mon problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X