Alles, was schneller als count (1) aus tableA Reihe zählt zu finden?
-
04-10-2019 - |
Frage
Gibt es irgend etwas, von dem wir schneller die nicht bekommen kann. von Zeilen in einer Tabelle anstelle der Verwendung count (1). Des Weiteren gibt es zwei Fälle:
a), wenn wir das nicht bekommen möchten. von Zeilen in einer Tabelle.
b) wenn wir wollen nur wissen, ob es bei-dest einer Reihe ist.
Vielen Dank im Voraus.
Lösung
a) Sie können Tabellenzeilenanzahl von Systemtabellen, 1 Beispiel ist gemäß Uri Dimant der Blog-Post hier .
b) Ich würde immer Gebrauch VORHANDEN:
IF EXISTS(SELECT * FROM YourTable)
Andere Tipps
b), wenn wir wollen, tot nur wissen, ob es atleast eine Zeile ist.
SELECT TOP 1 myField
FROM myTable [WHERE .....]
die Anzahl aller Zeilen in der Tabelle kennen, ohne sie zu scannen Sie
verwenden könnenselect SUM(row_count) AS row_count
from sys.dm_db_partition_stats
where object_id = object_id('dbo.tblName')
and index_id < 2
Ich bin nicht sicher, ob es irgendwelche Einschränkungen mit diesem Ansatz. (Vermutlich könnte es ist entweder die Zählung für nicht verpflichtet Aufzeichnungen oder nicht umfasst Änderungen im aktuellen Transaktion)
b) Linq to SQL erzeugt
EXISTS (SELECT NULL FROM Table....)
a) Nr.
b) Sie können die exists
Funktion verwenden, das überprüft nur, wenn es ein Ergebnis ist, und eigentlich nicht das Ergebnis erhalten.
Es ist dieser Ansatz, mit Sysobjects und Sysindexes:
Zählen Zeilen für alle Tabellen auf einmal
Es ist für mich in der Vergangenheit gut.