patternsqlMinor
Query Row Count for All Tables
Viewed 0 times
tablesallqueryforcountrow
Problem
I need help creating an MSSQL query to pass in every table name to the query below, which returns the number of rows.
This is how I get the row count for a single table:
What is the way to loop this query on all tables, returning an output of each table's name and row count?
Example output:
This is how I get the row count for a single table:
SELECT Total_Rows = SUM(st.row_count)
FROM sys.dm_db_partition_stats st
WHERE object_name(object_id) = 'TABLE_NAME' AND (index_id < 2)What is the way to loop this query on all tables, returning an output of each table's name and row count?
Example output:
TableName RowCount
---------------------
FirstTable 109
SecondTable 2195
ThirdTable 0Solution
You can simply use this :
Various other methods include:here
-
sys.partitions Catalog View
-
sys.dm_db_partition_stats Dynamic Management View (DMV)
-
sp_MSforeachtable System Stored Procedure
-
COALESCE() Function
SELECT sc.name +'.'+ ta.name TableName
,SUM(pa.rows) RowCnt
FROM sys.tables ta
INNER JOIN sys.partitions pa
ON pa.OBJECT_ID = ta.OBJECT_ID
INNER JOIN sys.schemas sc
ON ta.schema_id = sc.schema_id
WHERE ta.is_ms_shipped = 0 AND pa.index_id IN (1,0)
GROUP BY sc.name,ta.name
ORDER BY SUM(pa.rows) DESCVarious other methods include:here
-
sys.partitions Catalog View
-
sys.dm_db_partition_stats Dynamic Management View (DMV)
-
sp_MSforeachtable System Stored Procedure
-
COALESCE() Function
Code Snippets
SELECT sc.name +'.'+ ta.name TableName
,SUM(pa.rows) RowCnt
FROM sys.tables ta
INNER JOIN sys.partitions pa
ON pa.OBJECT_ID = ta.OBJECT_ID
INNER JOIN sys.schemas sc
ON ta.schema_id = sc.schema_id
WHERE ta.is_ms_shipped = 0 AND pa.index_id IN (1,0)
GROUP BY sc.name,ta.name
ORDER BY SUM(pa.rows) DESCContext
StackExchange Database Administrators Q#104867, answer score: 9
Revisions (0)
No revisions yet.