sql >> Database teknologi >  >> RDS >> Sqlserver

Få tabel- og indekslagerstørrelse i sql-server

Denne forespørgsel her vil vise den samlede størrelse, som en tabel fylder - klynget indeks, heap og alle ikke-klyngede indekser:

SELECT s.Name AS SchemaName, t.NAME AS TableName, p.rows AS RowCounts, SUM(a.total_pages) * 8 AS TotalSpaceKB, SUM(a.used_pages) * 8 AS UsedSpaceKB, (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB FROM sys.tables t INNER JOIN sys.schemas s ON s.schema_id = t.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 INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id WHERE t.NAME NOT LIKE 'dt%' -- filter out system tables for diagramming AND t.is_ms_shipped = 0 AND i.OBJECT_ID > 255 GROUP BY t.Name, s.Name, p.Rows ORDER BY s.Name, t.Name

Hvis du vil adskille tablespace fra indeksplads, skal du bruge AND i.index_id IN (0,1) for tablespacet (index_id = 0 er heaprummet, index_id = 1 er størrelsen af ​​det grupperede indeks =datasider) og AND i.index_id > 1 for kun indekspladsen



  1. MySQL-licens og GPL

  2. hvordan starter man en app med SQLite darabase på Android Studio emulator?

  3. Hent data fra en oracle-database som en CSV-fil (eller ethvert andet brugerdefineret tekstformat)

  4. PostgreSQL belastningsbalancering og ProxySQL-forbedringer - ClusterControl 1.5