DAIS2 - užitečné příkazy

Oracle

Velikost tabulky v blocích
    --pro spočítaní statistik je třeba napřed každou tabulku zanalyzovat a aktualizovat informace
    analyze table 'yourtable1' compute statistics;
    ...
    analyze table 'yourtableN' compute statistics;

    select TABLE_NAME,NUM_ROWS, BLOCKS 
    from dba_tables 
    where owner = 'ABC123'; --login musí být uppercase
    

Velikost tabulek a indexů v bytech
    select segment_name , sum(bytes) "size"
    from user_extents 
    group by segment_name;
    

SQL Server

Velikost tabulek v blocích i bytech
    SELECT 
        s.Name AS SchemaName,
        t.NAME AS TableName,
        p.rows AS RowCounts,
        SUM(a.total_pages) as Blocks,
        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
    

velikosti indexů
    SELECT i.[name] AS IndexName ,SUM(s.[used_page_count]) * 8 AS IndexSizeKB
    FROM sys.dm_db_partition_stats AS s
    INNER JOIN sys.indexes AS i ON s.[object_id] = i.[object_id]
    AND s.[index_id] = i.[index_id]
    GROUP BY i.[name]