Как проверить размер индексированного представления в SQL Server?
Его легко проверить размеры хранилища для таблиц и индексов, вы можете щелкнуть правой кнопкой мыши объект таблицы в SSMS Explorer и вуаля, детали появляются в хорошем всплывающем окне.
Но поскольку индексированные представления отображаются так же, как и обычные представления, в SSMS нет доступной информации о хранилище, чтобы показать мне текущий размер на диске.
Есть ли альтернативный способ расчета размера (скажем, с помощью системного SP или аналогичного метода)?
Благодарю.
2 ответа
Решение
Вы можете использовать этот запрос здесь, чтобы найти ваши данные для любого данного индексированного представления:
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