INDEXPROPERTY (Transact-SQL)

适用于:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics分析平台系统(PDW)Microsoft Fabric中的SQL数据库

根据指定的表标识号、索引或统计信息名称以及属性名称,返回已命名的索引或统计信息属性值。 返回 NULL XML 索引。

Transact-SQL 语法约定

语法

INDEXPROPERTY ( object_ID , index_or_statistics_name , property )

参数

object_ID

一个表达式,其中包含要为其提供索引属性信息的表或索引视图的对象标识号。 object_id 的数据类型为 int。

index_or_statistics_name

一个表达式,其中包含要为其返回属性信息的索引或统计信息的名称。 index_or_statistics_name 的数据类型为 nvarchar(128)

property

一个表达式,其中包含要返回的索引或统计信息属性的名称。 property 的数据类型为 varchar(128),它可以为以下值之一

注意

除非另有说明,NULL否则在属性不是有效的属性名称时返回,object_ID不是有效的对象 ID,object_ID是指定属性不支持的对象类型,或者调用方无权查看对象的元数据。

属性 说明
IndexDepth 索引的深度。 索引级别数。

NULL = XML 索引或输入无效。
IndexFillFactor 创建索引或最后重新生成索引时使用的填充因子值。 填充因子
IndexID 指定表或索引视图上索引的索引 ID。 索引 ID
IsAutoStatistics 统计信息是由 AUTO_CREATE_STATISTICS 选项 ALTER DATABASE生成的。 1 = 真
0 = False 或 XML 索引。
IsClustered 索引是聚集的。 1 = 真
0 = False 或 XML 索引。
IsDisabled 索引被禁用。 1 = 真
0 = 错误
NULL = 输入无效。
IsFulltextKey 索引是表的全文和语义索引键。 1 = 真
0 = False 或 XML 索引。
NULL = 输入无效。
IsHypothetical 索引是假设的,不能直接用作数据访问路径。 假设索引包含列级统计信息,由数据库引擎优化顾问维护和使用。 1 = 真
0 = False 或 XML 索引
NULL = 输入无效。
IsPadIndex 索引指定每个内部节点上将要保持空闲的空间。 1 = 真
0 = False 或 XML 索引。
IsPageLockDisallowed 由选项ALLOW_PAGE_LOCKS设置ALTER INDEX的页面锁定值。 1 = 不允许页面锁定。
0 = 允许页面锁定。
NULL = 输入无效。
IsRowLockDisallowed 行锁定值由 ALLOW_ROW_LOCKS 选项 ALTER INDEX设置。 1 = 不允许行锁定。
0 = 允许行锁定。
NULL = 输入无效。
IsStatistics index_or_statistics_name是由语句或CREATE STATISTICS选项AUTO_CREATE_STATISTICS创建的ALTER DATABASE统计信息。 1 = 真
0 = False 或 XML 索引。
IsUnique 索引是唯一的。 1 = 真
0 = False 或 XML 索引。
IsColumnstore 索引是内存优化列存储索引。 1 = 真
0 = 错误

适用于:SQL Server 2012(11.x)及更高版本。
IsOptimizedForSequentialKey 索引是否已启用优化最后一页插入。 1 = 真
0 = 错误

适用于:SQL Server 2019 (15.x) 及更高版本。

返回类型

int

例外

返回 NULL 错误或调用方没有查看对象的权限。

用户只能查看用户拥有的安全对象的元数据或向其授予权限的安全对象。 这意味着,如果用户对对象没有任何权限,则可能会返回INDEXPROPERTY元数据发出的内置函数NULL。 有关详细信息,请参阅 元数据可见性配置

示例

本文中的代码示例使用 AdventureWorks2025AdventureWorksDW2025 示例数据库,可以从 Microsoft SQL Server 示例和社区项目 主页下载该数据库。

答: 返回 Employee 表索引的属性

以下示例返回IsClustered了 AdventureWorks2025 数据库中表索引Employee的 、 IndexDepthIndexFillFactor 和 属性PK_Employee_BusinessEntityID

SELECT
    INDEXPROPERTY(OBJECT_ID('HumanResources.Employee'), 'PK_Employee_BusinessEntityID', 'IsClustered') AS [Is Clustered],
    INDEXPROPERTY(OBJECT_ID('HumanResources.Employee'), 'PK_Employee_BusinessEntityID', 'IndexDepth') AS [Index Depth],
    INDEXPROPERTY(OBJECT_ID('HumanResources.Employee'), 'PK_Employee_BusinessEntityID', 'IndexFillFactor') AS [Fill Factor];

结果集如下。

Is Clustered Index Depth Fill Factor
------------ ----------- -----------
1            2           0

示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

B. 返回 FactResellerSales 表索引的属性

以下示例检查 FactResellerSales 表上某一索引的属性。

SELECT
    INDEXPROPERTY(OBJECT_ID('dbo.FactResellerSales'), 'ClusteredIndex_6d10fa223e5e4c1fbba087e29e16a7a2','IsClustered') AS [Is Clustered],
    INDEXPROPERTY(OBJECT_ID('dbo.FactResellerSales'), 'ClusteredIndex_6d10fa223e5e4c1fbba087e29e16a7a2','IsColumnstore') AS [Is Columnstore Index],
    INDEXPROPERTY(OBJECT_ID('dbo.FactResellerSales'), 'ClusteredIndex_6d10fa223e5e4c1fbba087e29e16a7a2','IndexFillFactor') AS [Fill Factor];
GO