Jeśli jesteś na SQL Server 2005 lub nowszy (ty niestety nie określić, które wersję SQL Server używasz), to zapytanie może dać Ci te informacje:
SELECT
TableName = t.NAME,
TableSchema = s.Name,
RowCounts = p.rows
FROM
sys.tables t
INNER JOIN
sys.schemas s ON t.schema_id = s.schema_id
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
WHERE
t.is_ms_shipped = 0
GROUP BY
t.NAME, s.Name, p.Rows
ORDER BY
s.Name, t.Name
daje to coś podobnego wyjściowego (to jest z AdventureWorks
):
TableName TableSchema RowCounts
AWBuildVersion dbo 1
DatabaseLog dbo 1597
ErrorLog dbo 0
Department HumanResources 16
Employee HumanResources 290
JobCandidate HumanResources 13
Address Person 19614
AddressType Person 6
... and so on......
Arent't tych rowcounts jedynie wartościami? –
@a_horse_with_no_name: nie ** szacunki ** - ale przybliżenia. Liczba wierszy jest aktualizowana regularnie - ale w danym momencie nie są one w 100% dokładne, jeśli wykonano wiele wstawień lub usunięć, to prawda. Ale wykonanie "SELECT COUNT (*)" na wszystkich tabelach w przyzwoitej wielkości bazie danych ze znaczną liczbą wierszy będzie po prostu ** okropne ** pod względem wydajności i czasu wykonania ... –