Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Uzyskaj rozmiar pamięci tabeli i indeksu na serwerze sql

To zapytanie wyświetli całkowity rozmiar, jaki zajmuje tabela — indeks klastrowy, sterta i wszystkie indeksy nieklastrowane:

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

Jeśli chcesz oddzielić przestrzeń tabel od przestrzeni indeksów, musisz użyć AND i.index_id IN (0,1) dla obszaru tabel (index_id = 0 to przestrzeń sterty, index_id = 1 to rozmiar indeksu klastrowanego =strony danych) i AND i.index_id > 1 dla przestrzeni tylko do indeksu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Use Case Statement w Join

  2. Wskazanie podstawowego/domyślnego rekordu w bazie danych

  3. Znajdź ostatni wiersz w grupie według zapytania-SQL Server

  4. SQL Server nie używa indeksu porównującego datetime do not null

  5. Konwertuj „datetime2” na „datetimeoffset” w SQL Server (przykłady T-SQL)