Qualsiasi cosa più veloce di conteggio (1) da tableA per trovare conteggi delle righe?
-
04-10-2019 - |
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.
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.