Qual è la differenza traSQL mediante conteggio delle righe vs Top
Set Rowcount X
E
Select Top X *
From Z
in TSQL?
Qual è la differenza traSQL mediante conteggio delle righe vs Top
Set Rowcount X
E
Select Top X *
From Z
in TSQL?
Top può fare ancora un paio di cose per voi. Per uno, è possibile specificare una percentuale, anziché un intero. Puoi anche gestire le situazioni in cui si verificano legami nei valori delle colonne.
La differenza principale è che top
avrà effetto solo sulla query in esecuzione mentre set rowcount
verrà mantenuto con la connessione e verrà applicato a tutte le query eseguite all'interno di quella connessione.
Nelle versioni precedenti di SQL Server (2005 e precedenti non sono sicuro circa 2008) non si poteva usare una variabile in un'istruzione superiore in modo da:
declare @rc int
set @rc=10
select top @rc * from myTable --Wont work
set rowcount @rc
select * from myTable --Will work
2008 e soprattutto permette
declare @rc int
set @rc=10000
select top (@rc) * from myTable --will now work
, ma solo se si utilizza() questo può essere utile per utilizzare i parametri come:
OPTION (OPTIMIZE FOR (@rc= 15))
alla fine che permette di selezionare everithing ma ottimizzare per un caso più comune
Questo fatto è un singhiozzo difficile, problema. C'è un modo per impostare il conteggio delle righe, che influisce solo sulla query corrente? – crosenblum
@crosenblum se si esegue un 'SET ROWCOUNT 0' dopo la query, si dovrebbe andare bene. – travis