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

Tabel og indeksstørrelse i SQL Server

sp_spaceused giver dig størrelsen af ​​alle indekserne kombineret.

Hvis du vil have størrelsen på hvert indeks for en tabel, skal du bruge en af ​​disse to forespørgsler:

SELECT
    i.name                  AS IndexName,
    SUM(s.used_page_count) * 8   AS IndexSizeKB
FROM sys.dm_db_partition_stats  AS s 
JOIN sys.indexes                AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
WHERE s.[object_id] = object_id('dbo.TableName')
GROUP BY i.name
ORDER BY i.name

SELECT
    i.name              AS IndexName,
    SUM(page_count * 8) AS IndexSizeKB
FROM sys.dm_db_index_physical_stats(
    db_id(), object_id('dbo.TableName'), NULL, NULL, 'DETAILED') AS s
JOIN sys.indexes AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
GROUP BY i.name
ORDER BY i.name

Resultaterne er normalt lidt anderledes, men inden for 1%.



  1. Hvordan Zend DB administrerer databaseforbindelser

  2. Løsningsprocedure uden parametre

  3. Langt heltal transformeres, når det indsættes i kortere kolonne, ikke afkortet. Hvorfor? Hvad er formlen?

  4. Hvordan flettes to mySQL-databaser til én?