모든 테이블 로우 갯수를 알고 싶습니다.
예를 들어 TEST DB에 테이블이 10 개가 있씁니다
1번 테이블 로우갯수
.
.
.
.
10번 테이블 로우갯수
Comment 9
-
Terry
2015.11.26 16:17
-
이리
2015.11.26 16:40
스키마가 dbo가 아니고 여러개일 경우에는 문제가 됩니다..
-
백마탄나
2015.11.26 16:33
감사합니다.
-
이리
2015.11.26 16:42
SELECT T1.name, T2.row_countFROM sys.tables AS T1INNER JOIN sys.dm_db_partition_stats AS T2 ON T1.object_id = T2.object_idWHERE T2.index_id <= 1ORDER BY 1대략적인 수이긴 하지만.... -
이리
2015.11.26 16:48
SELECT o.name, i.rowsFROM sys.sysindexes iINNER JOIN sys.sysobjects o ON i.id = o.idWHERE i.indid < 2AND o.xtype = 'U'ORDER BY o.name이런것도 있네요.... -
이리
2015.11.26 16:57
sp_tables_info_rowset 라는 프로시저도 있네요..
테이블명 동적으로 받아서 프로시저 돌리셔도 될듯..
-
항해자™
2015.11.26 17:25
조인 없이 아래와 같은 식으로도 되겠네요ㅎㅎselect [rows] from sys.sysindexes where id = object_id('dbo.tSample') and indid < 2 go select object_name(id) as cName , [rows] from sys.sysindexes where indid < 2 and id > 10000 go
-
이리
2015.11.26 17:37
테이블이 아닌것도 나오는거 같아요..
-
한태
2016.02.02 20:48
select QUOTENAME(SCHEMA_NAME(st.schema_id))+'.'+ QUOTENAME(st.name) AS TABLENAME, ss.rowsfrom sys.sysindexes ss join sys.tables ston ss.id=st.object_idwhere ss.indid <=1order by TABLENAME스키마까지 나오게 작성해보았습니다.
참고만 하세요..
시스템테이블인
sys.tables 을 이용해서
동적쿼리로 처리했습니다.
---쿼리시작---
Declare @ls_sql varchar(max)
Declare @ll_cnt decimal(18,0)
Declare @ll_i decimal(18,0)
Declare @ls_tbl_nm varchar(200)
--DROP TABLE #data
Create table #data
(
tbl_nm varchar(200) not null
,seq decimal(18,0) not null
)
Insert
Into #data
Select a.name
,ROW_NUMBER() over (order by name)
From sys.tables a
Where a.type = 'U'
Set @ls_sql = ''
Select @ll_cnt = COUNT(1)
From #data
Set @ll_i = 0
While @ll_i < @ll_cnt
Begin
Set @ll_i = @ll_i + 1
Select @ls_tbl_nm = a.tbl_nm
From #data a
Where a.seq = @ll_i
IF @ll_i = @ll_cnt
Begin
Set @ls_sql = @ls_sql + ' Select ''' + @ls_tbl_nm + ''' As tbl_nm ,Count(1) As row_cnt From ' + @ls_tbl_nm + ' '
End
Else
Begin
Set @ls_sql = @ls_sql + ' Select ''' + @ls_tbl_nm + ''' As tbl_nm ,Count(1) As row_cnt From ' + @ls_tbl_nm + ' Union All '
End
End
Exec (@ls_sql)