SQL Server: Anzahl der Rows aller Tabellen

Oft benötigt man die gesamte Anzahl an Rows einer Tabelle. Wenn diese sehr Groß ist, kann ein SELECT COUNT(*) problematisch werden. Zum einen dauert dieser dann sehr lang und erzeugt auch eine gewisse Last auf dem Server. Als Alternative bietet sich hier die dynamische View „sys.dm_db_partition_stats“ des SQL Servers an, welche diese Information bereithält.

Um die Anzahl der Rows aller Tabelle anzuzeigen reicht folgendes SQL Statement:

SELECT so.name as TableName, ddps.row_count as [RowCount]
FROM sys.objects AS so
    JOIN sys.indexes AS si ON si.OBJECT_ID = so.OBJECT_ID
    JOIN sys.dm_db_partition_stats AS ddps ON si.OBJECT_ID = ddps.OBJECT_ID  AND si.index_id = ddps.index_id
WHERE si.index_id < 2  AND so.is_ms_shipped = 0
ORDER BY ddps.row_count DESC