sql >> データベース >  >> RDS >> Sqlserver

SQLサーバーでテーブルとインデックスのストレージサイズを取得

    このクエリは、テーブルが占める合計サイズ (クラスター化インデックス、ヒープ、およびすべての非クラスター化インデックス) を一覧表示します:

    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
      

    テーブルスペースをインデックススペースから分離したい場合は、 AND i.index_id IN (0,1) を使用する必要があります 表スペース用 (index_id = 0 はヒープ領域、index_id = 1 クラスター化インデックスのサイズ =データ ページ) および AND i.index_id > 1 インデックス専用スペース用



    1. LinuxにMicrosoftSQLをインストールする方法

    2. NodejsからSQLServerに接続する

    3. MySQL:特定のパラメータを含み、1日より古い行を削除します

    4. WordPressワークフローの変更