2009-06-12 7 views
3

ce qui est plus rapide requête?ce qui est plus rapide requête (nom de sélection .... ou sélectionnez top (1) Nom

select Name from Worker 

ou

select TOP(1) Name from Worker 

Je 1.000.000 dossiers

remercient à l'avance

+4

sérieusement? n'est-ce pas quelque chose que tu peux tester? –

+3

Pourquoi les downvotes? C'est une question légitime, simple et directe, j'ai compris ce qu'il demande. Bien sûr, il aurait pu être mieux formaté, mais allez, -2? Je lui donne un +1. –

+1

Est-ce que ceux qui laissent des downvotes laisser un commentaire à expliquer? C'est une bonne question à avoir, surtout si vous avez ORDRE PAR et DISTINCTS là-bas et sont confus au sujet de la performance. – Eric

Répondre

9

Si vous ne disposez pas d'un ORDER BY ou d'un DISTINCT, SELECT TOP(1) Name FROM Worker est plus rapide

La raison en est que si vous avez un ORDER BY ou un DISTINCT, la requête doit passer par toute la table pour trier et filtrer les résultats indésirables. S'il s'agit d'un SELECT TOP droit, cependant, il peut aller à la première page, prendre la première rangée, et en finir rapidement.

+1

True. Bien sûr, si vous avez 1 000 000 enregistrements, la sélection du top 1 sera plus rapide, quoi qu'il arrive. Une clause d'ordre ne fera que ralentir davantage les choses et réduire un peu la différence de vitesse. –

+0

merci beaucoup! – Gold

+1

Au cours de l'exécution, la requête peut passer le contrôle parce que le client est incapable d'analyser le résultat assez rapidement (consommer le jeu de résultats de 1 million de noms). Ainsi, même avec la commande, le TOP 1 * peut être plus rapide, en fonction de la lenteur du traitement du client. –

Questions connexes