Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhận kích thước lưu trữ Bảng và Chỉ mục trong máy chủ sql

Truy vấn này ở đây sẽ liệt kê tổng kích thước mà một bảng chiếm - chỉ mục nhóm, đống và tất cả các chỉ số không phân nhóm:

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

Nếu bạn muốn tách không gian bảng khỏi không gian chỉ mục, bạn cần sử dụng AND i.index_id IN (0,1) cho không gian bảng (index_id = 0 là không gian đống, index_id = 1 là kích thước của các trang dữ liệu index =data) được phân cụm) và AND i.index_id > 1 cho không gian chỉ chỉ mục



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể bỏ giản đồ vì nó không tồn tại hoặc bạn không có quyền. - Hướng dẫn SQL Server / TSQL Phần 29

  2. Cần trợ giúp trong truy vấn động với Mệnh đề IN

  3. Cấu hình sao chép giao dịch SQL Server

  4. Cách lấy hình ảnh nhị phân từ cơ sở dữ liệu bằng C # trong ASP.NET

  5. cách định cấu hình sử dụng bộ nhớ tối đa của SQL Server