如何在 SQL Server 中检查索引视图的大小?

Posted

技术标签:

【中文标题】如何在 SQL Server 中检查索引视图的大小?【英文标题】:How do I check the size of an indexed view in SQL Server? 【发布时间】:2011-08-28 05:08:47 【问题描述】:

它很容易检查表和索引的存储大小,您可以在 SSMS 资源管理器上右键单击表对象,瞧,详细信息会显示在一个漂亮的弹出窗口中。

但由于索引视图与普通视图显示相同,因此 SSMS 中没有可用的存储信息来显示当前占用的磁盘大小。

是否有其他计算大小的方法(例如通过系统 SP 或类似方法)?

谢谢。

【问题讨论】:

【参考方案1】:
EXEC sys.sp_spaceused @objname = N'dbo.YourView'

【讨论】:

【参考方案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

【讨论】:

以上是关于如何在 SQL Server 中检查索引视图的大小?的主要内容,如果未能解决你的问题,请参考以下文章

关于视图和索引 (SQL Server 2008 R2)

如何检查 SQL Server 2005 中是不是存在非聚集索引

如何估计 SQL Server 索引大小

如何检查 SQL Server CE 数据库的索引?

在 SQL Server 中的架构绑定视图上创建索引

Sql Server2005数据库怎么查看视图里的字段。