106 votes

L'ajout de 'LIMIT 1' aux requêtes MySQL les accélère-t-il lorsque vous savez qu'il n'y aura qu'un seul résultat?

Lorsque j'ajoute LIMIT 1 à une requête MySQL, arrête-t-il la recherche après avoir trouvé 1 résultat (ce qui le rend plus rapide) ou va-t-il tout de même extraire tous les résultats et les tronquer à la fin?

90voto

Eran Galperin Points 49594

Selon la requête, l'ajout d'une clause limit peut avoir un impact énorme sur les performances. Si vous souhaitez une seule ligne (ou sais pour un fait qu'une seule ligne peut satisfaire à la requête), et ne sont pas sûr de savoir comment l'interne de l'optimiseur va l'exécuter (par exemple, clause where ne pas frapper un index et ainsi de suite), alors vous devriez certainement ajouter une clause LIMIT.

Comme pour les requêtes optimisées (à l'aide des index sur des petites tables) il ne sera probablement pas beaucoup d'importance dans la performance, mais encore une fois - si vous êtes uniquement intéressé par une ligne que d'ajouter une clause LIMIT, peu importe.

22voto

rjamestaylor Points 1610

Limite peut affecter les performances de la requête (voir les commentaires et le lien ci-dessous) et il réduit également le résultat qui est sortie par MySQL. Pour une requête dans laquelle vous vous attendez à un résultat unique il y a des avantages.

En outre, limiter le nombre de résultats peut, en réalité, la vitesse du total des requêtes temps de transfert de gros ensembles de résultats de l'utilisation de la mémoire et potentiellement créer des tables temporaires sur le disque. Je mentionne ce que j'ai vu récemment une application qui n'utilise pas de limite de tuer un serveur en raison d'énormes ensembles de résultats et avec limite en place l'utilisation des ressources a chuté considérablement.

Consultez cette page pour plus de détails: Documentation de MySQL: LIMITE d'Optimisation

8voto

Kris Erickson Points 16204

S'il n'y a qu'un seul résultat, alors non, LIMIT ne le rendra pas plus rapide. S'il y a beaucoup de résultats, et que vous n'avez besoin que du premier résultat, et qu'il n'y a pas de groupe ou ordre par instructions, alors LIMIT le rendra plus rapide.

2voto

driAn Points 1973

Si vous n'attendez vraiment qu'un seul résultat, il est logique d'ajouter la limite à votre requête. Je ne connais pas le fonctionnement interne de MySQL, mais je suis sûr qu'il ne réunira pas un ensemble de résultats de 100 000 enregistrements + juste pour le ramener à 1 à la fin.

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