Как проверить размер индексированного представления в SQL Server? - PullRequest
7 голосов
/ 18 мая 2011

Легко проверить размеры хранилища для таблиц и индексов, вы можете щелкнуть правой кнопкой мыши объект таблицы в SSMS Explorer и вуаля, подробности появятся в хорошем всплывающем окне.

Но поскольку индексированные представления отображаются так же, как и обычные представления, в SSMS нет доступной информации о хранилище для отображения текущего размера, занимаемого на диске.

enter image description here

Существует ли альтернативный способ расчета размера (скажем, с помощью системного SP или аналогичного метода)?

Спасибо.

Ответы [ 2 ]

14 голосов
/ 18 мая 2011
EXEC sys.sp_spaceused @objname = N'dbo.YourView'
3 голосов
/ 18 мая 2011

Вы можете использовать этот запрос здесь, чтобы найти ваши данные для любого данного индексированного представления:

SELECT 
    v.NAME AS ViewName,
    i.name AS IndexName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB, 
    SUM(a.used_pages) * 8 AS UsedSpaceKB, 
    SUM(a.data_pages) * 8 AS DataSpaceKB
FROM 
    sys.views v
INNER JOIN      
    sys.indexes i ON v.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 
    v.Name = 'YourViewNameHere' --View name only, not 'schema.viewname'
    AND
    i.index_id = 1   -- clustered index, remove this to see all indexes
GROUP BY 
    v.NAME, i.object_id, i.index_id, i.name, p.Rows

Выводит что-то вроде

ViewName      IndexName     RowCounts  TotalSpaceKB  UsedSpaceKB  DataSpaceKB
YourViewName  IX_YourView     1771         592           552          536
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...