我需要知道特定數據庫中每個表中有多少條記錄。我不在乎記錄中是什麼,他們都需要計數。如何統計SQL Server 2005數據庫中每個表中的每條記錄?
我已經知道如何做到這一點爲一個單一的表SELECT Count(1) FROM [my_table_name]
,但這對200多個表得到一點冗餘。
我需要知道特定數據庫中每個表中有多少條記錄。我不在乎記錄中是什麼,他們都需要計數。如何統計SQL Server 2005數據庫中每個表中的每條記錄?
我已經知道如何做到這一點爲一個單一的表SELECT Count(1) FROM [my_table_name]
,但這對200多個表得到一點冗餘。
試試這個:(非常快,雖然可能不太精確的方法。)
SELECT so.name, MAX(si.rows)
FROM sysobjects so
JOIN sysindexes si ON so.xtype = 'U'
AND si.id = OBJECT_ID(so.name)
GROUP BY so.name
ORDER BY 2 DESC
這是很多的一種方法。 See here爲其他幾個選項。
從How do I get a list of SQL Server tables and their row counts?
DECLARE @SQL VARCHAR(255)
SET @SQL = 'DBCC UPDATEUSAGE (' + DB_NAME() + ')'
EXEC(@SQL)
CREATE TABLE #foo
(
tablename VARCHAR(255),
rc INT
)
INSERT #foo
EXEC sp_msForEachTable
'SELECT PARSENAME(''?'', 1),
COUNT(*) FROM ?'
SELECT tablename, rc
FROM #foo
ORDER BY rc DESC
DROP TABLE #foo
這正是我正在尋找的,謝謝! – 2010-03-29 20:43:12
正如已經公佈,如果是一次性的事情,我可能會使用sp_msforeachtable。然而,這是一個undocument系統過程,所以如果這是一個問題,那麼你可以很容易地做到這一點是這樣的:
DECLARE @SQL VARCHAR(MAX)
SET @SQL = ''
SELECT @SQL =
@SQL + 'SELECT ''' + TABLE_NAME + ''' AS TableName, COUNT(*) AS RecordCount
FROM [' + TABLE_NAME + '];' + CHAR(13)
FROM INFORMATION_SCHEMA.TABLES
EXECUTE (@SQL)
我敢肯定,你可以得到比這更好的東西,但是這應該在一個緊要關頭。備案,sp_spaceused
是你的朋友在這樣的查詢!
DECLARE @tbls table (TableID int identity, TableName varchar(max))
INSERT INTO @tbls
SELECT t1.name
FROM sysobjects t1
INNER JOIN sysindexes t2
ON t1.id = t2.id
WHERE t2.indid <= 1
AND t2.rows > 0
AND OBJECTPROPERTY(t1.id,'IsUserTable') = 1
DECLARE @tblcount int
SELECT @tblcount=COUNT(1)
FROM @tbls
DECLARE @results table (name varchar(max), [rows] bigint, reserved varchar(max), data varchar(max), index_size varchar(max), unused varchar(max))
DECLARE @counter int
SET @counter = 0
DECLARE @tblname varchar(max)
while @counter < @tblcount
begin
SELECT @tblname=TableName FROM @tbls WHERE [email protected]+1
INSERT INTO @results
exec sp_spaceused @tblname
SET @counter = @counter+1
end
SELECT * FROM @results
哈哈,然後這個開發背離數據庫... ;-) – Jaxidian 2010-03-29 20:44:32
引用您的資料,Paul:http://sqlserver2000.databases.aspfaq.com/how-do-i-get-a-list-of-sql-server-tables-and-their-row- counts.html – Matt 2010-03-29 20:33:46
@Matt:你抓住了我中期編輯。我經常做。 – 2010-03-29 20:35:43
這只是一個估計,不是100%確切的,並且使用了可怕的古代(惡意)連接語法。 – 2010-03-29 20:36:57