Domanda

C'è qualche cosa da cui possiamo più veloce ottenere il no. di righe di una tabella invece di utilizzare count (1). Inoltre ci sono due casi:

a) quando vogliamo ottenere il no. di righe in una tabella.

b) quando vogliamo solo sapere se c'è at-almeno una riga.

Grazie in anticipo.

È stato utile?

Soluzione

a) È possibile ottenere conteggi delle righe tavolo da tabelle di sistema, 1 esempio è secondo Uri Dimant di blog post qui .

b) Ho sempre uso esiste:

IF EXISTS(SELECT * FROM YourTable)

Altri suggerimenti

b) quando vogliamo solo tot sapere se v'è almeno uno di fila.

SELECT TOP 1 myField FROM myTable [WHERE .....]

Per conoscere il conteggio di tutte le righe della tabella senza la scansione si possono usare

select SUM(row_count) AS row_count
from sys.dm_db_partition_stats
where object_id = object_id('dbo.tblName')
    and index_id < 2

Non sono sicuro se ci sono avvertimenti con questo approccio. (Presumibilmente potrebbe includere sia il conteggio per i record non impegnati o non comprendere le modifiche apportate all'interno della vostra transazione corrente)

b) Linq to Sql genera

EXISTS (SELECT NULL FROM Table....)

a) n.

b) è possibile utilizzare la funzione di exists, che controlla solo se v'è un risultato e in realtà non ottiene il risultato.

C'è questo approccio, utilizzando sysobjects e sysindexes:

Conteggio righe per tutte le tabelle in una sola volta

E 'funzionato bene per me in passato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top