2009-05-14 17 views

risposta

9

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.

+0

Questo fatto è un singhiozzo difficile, problema. C'è un modo per impostare il conteggio delle righe, che influisce solo sulla query corrente? – crosenblum

+1

@crosenblum se si esegue un 'SET ROWCOUNT 0' dopo la query, si dovrebbe andare bene. – travis

4

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 
4

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

Problemi correlati