📊 Zeilen zählen – effizient mit sys.partitions
Statt COUNT(*) über die Systemkataloge – schnell, ressourcenschonend und fast immer genau genug
Wer schon einmal versucht hat, mit
SELECT COUNT(*) FROM Tabelle die Größe einer Datenbank zu ermitteln, weiß: Das kann bei großen Tabellen ewig dauern und blockiert Ressourcen. Viel effizienter ist der Blick in die Systemkataloge. Das folgende Skript liefert die Zeilenanzahl aller Benutzertabellen auf einen Blick – ohne teure vollständige Scans.
SELECT
SCHEMA_NAME(schema_id) AS [SchemaName],
[Tables].name AS [TableName],
SUM([Partitions].[rows]) AS [TotalRowCount]
FROM sys.tables AS [Tables]
JOIN sys.partitions AS [Partitions]
ON [Tables].[object_id] = [Partitions].[object_id]
AND [Partitions].index_id IN (0, 1) -- 0 = Heap, 1 = Clustered Index
-- WHERE [Tables].name = N'IhreTabelle' -- bei Bedarf entkommentieren
GROUP BY SCHEMA_NAME(schema_id), [Tables].name
ORDER BY [TotalRowCount] DESC;
🔍 Wie funktioniert es?
sys.tablesliefert alle Benutzertabellen.sys.partitionsenthält pro Index (oder Heap) eine Zeile mit der aktuellen Zeilenanzahl inrows.- Der Filter
index_id IN (0,1)stellt sicher, dass nur der Heap (0) oder der clustered Index (1) berücksichtigt wird – doppelte Zählungen (z. B. durch nicht‑clustered Indizes) werden vermieden. SUM()addiert die Zeilen, falls eine Tabelle partitioniert ist (mehrere Partitionen pro Index).
💡 Hinweis zur Genauigkeit: Die Werte stammen aus den Systemkatalogen und sind fast immer aktuell – bei sehr hoher Schreibaktivität kann es minimale Abweichungen geben. Für Größenabschätzungen, Dokumentationen oder Capacity Planning ist die Abfrage aber völlig ausreichend. Eine echte
COUNT(*) wäre exakter, aber deutlich teurer.
💡 Einsatzmöglichkeiten
- Datenbankgrößen-Check – Welche Tabellen sind die größten?
- Vor einer Archivierung – Wie viele Zeilen wandern um?
- Reporting & Dokumentation – schnelle Übersicht ohne Last.
🔧 Tipp: Mit der auskommentierten
WHERE-Klausel können Sie gezielt eine einzelne Tabelle prüfen. Die Abfrage gehört in jede DBA‑Werkzeugkiste.
Fazit: Sparen Sie Zeit und Ressourcen – nutzen Sie
sys.partitions für schnelle Zeilenzählungen. Das Skript ist ideal für Monitoring, Dokumentation und erste Performanceanalysen.