J'ai besoin de sélectionner des lots de n rangées dans une grande table.
Je sais de deux façons de faire ceci:
SET ROWCOUNT
SET ROWCOUNT ####
SELECT something FROM table WHERE clauses
SET ROWCOUNT 0 -- rowcount is only needed for the one query above.
TOP
SELECT TOP ### something FROM table WHERE clauses
Notes:
SELECT
. La limite ne s'appliquera à aucune autre déclaration (SO - (motifs habituels à choisir RowCount Over TOP Ne pas appliquer).Recherche effectuée :
SET ROWCOUNT ####
SELECT something FROM table WHERE clauses
SET ROWCOUNT 0 --
Dans cette requête, Optimizer n'inclut pas "SET ROWCOUNT ####
"Partie dans le plan de requête donc aucun coût.
Il est rarement utilisé et il n'ya pas beaucoup de raison d'utiliser car nous ne sommes pas en mesure de spécifier des critères.
SELECT TOP ### something FROM table WHERE clauses
Généralement TOP
est accompagné de order clause
mais pas nécessaire.
TOP
est donc évalué le plan de requête.
donc, ensemble RowCount fonctionnera peu mieux.
Différence principale
Top travail uniquement sur la requête qu'elle est utilisée.
SET ROWCOUNT
Travailler pour la portée actuelle.Ille pour toutes les requêtes sont affectées par SET ROWCOUNT
Dans cette périmètre, y compris la gâchette.
Supposons que
SET RowCount 2
et en fait (par logique) 4 lignes doivent être affectés dans la gâchette .Mais seulement 2 rangées seront affectées à cause de RowCount 2
Donc, il n'est pas sûr d'utiliser ensemble RowCount.
J'ai entendu SET ROWCOUNT
sera amorti dans la prochaine version.