<테이블별 용량 (Table Size) 조회>
+-------------------+------------+
| Tables | Size in MB |
+-------------------+------------+
| location | 0.20 | -> ? %
| data | 0.15 | -> ? %
| company | 0.11 | -> ? %
| money | 0.09 | - >? %
| pay | 0.08 | -> ? %
+-------------------+------------+
SELECT TABLE_NAME AS "Tables",
round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB"
FROM information_schema.TABLES
WHERE table_schema = 'kanu'
ORDER BY (data_length + index_length) DESC
LIMIT 5;
SELECT
TABLE_NAME AS "Table Name"
, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Table Size(MB)"
, ROUND(( (data_length+index_length) / SUM( (data_length + index_length) ) OVER() )*100, 2) AS sizePercent
, ROUND( SUM( (data_length + index_length) ) OVER() /1024/1024 , 2) AS "TotalSize(MB)"
FROM information_schema.TABLES
WHERE table_schema = 'mysql'
ORDER BY (data_length + index_length) DESC
여기서 도움을 받아서 mysql에서 각 테이블의 사용량을 %로 출력하는 쿼리를 구했는데
mssql에서는 다르다는 것을 몰랐네요..
SELECT o.name
, i.rows
FROM sysindexes i
INNER JOIN sysobjects o ON i.id = o.id
WHERE i.indid < 2
AND o.xtype = 'U'
ORDER BY
i.rows DESC
해당 쿼리를 사용해서 테이블 수를 구하는 쿼리는 알아봤는데
mssql에서 각 테이블의 사용량을 %로 출력하는 쿼리는 어떻게 될까요
도움 부탁드리겠습니다.
이런 관리용 쿼리는 DB마다 아키텍쳐에 맞게 작성되어야 합니다.
-- MS SQL Server SELECT MIN(o.name) AS '테이블명' , SUM(reserved)*8192 /1024 AS '테이블용량(KB)' , SUM(SUM(reserved)*8192) OVER() /1024 AS '전체사용량(KB) ' , ROUND(CAST(SUM(reserved)*8192 AS FLOAT) / CAST( SUM(SUM(reserved)*8192) OVER() AS FLOAT) *100, 2) AS '사용율(%)' FROM sysindexes i JOIN sysobjects o ON o.id = i.id WHERE i.indid IN (0, 1, 255) AND o.xtype = 'U' GROUP BY i.id ORDER BY 테이블명