INDEXPROPERTY (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

傳回指定資料表識別碼、索引或統計資料名稱以及屬性名稱的具名索引或統計資料屬性值。 如果是 XML 索引,則傳回 NULL。

Transact-SQL 語法慣例

Syntax

INDEXPROPERTY ( object_ID , index_or_statistics_name , property )   

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

object_ID
這是包含要提供的索引屬性資訊所屬之資料表或索引檢視之物件識別碼的運算式。 object_IDint

index_or_statistics_name
這是包含傳回屬性資訊所屬之索引或統計資料名稱的運算式。 index_or_statistics_namenvarchar(128)

property
這是包含要傳回之資料庫屬性名稱的運算式。 propertyvarchar(128),並且可為下列其中一個值。

注意

除非另有說明,否則當 property 不是有效屬性的名稱、object_ID 不是有效的物件識別碼、object_ID 不是指定屬性所支援的物件類型,或呼叫者沒有檢視物件中繼資料的權限時,便會傳回 NULL。

屬性 描述
IndexDepth 索引的深度。 索引層級的數目。

NULL = XML 索引或輸入無效。
IndexFillFactor 當建立索引或上次重建索引時,所用的填滿因數值。 填滿因數
IndexID 指定的資料表或索引檢視之索引的索引識別碼。 Index ID
IsAutoStatistics ALTER DATABASE 的 AUTO_CREATE_STATISTICS 選項所產生的統計資料。 1 = True

0 = False 或 XML 索引。
IsClustered 索引已建立叢集。 1 = True

0 = False 或 XML 索引。
IsDisabled 索引已停用。 1 = True

0 = False

NULL = 輸入無效。
IsFulltextKey 索引是資料表的全文檢索和語意索引鍵。 適用於:SQL Server 2008 (10.0.x) 和更新版本。

1 = True

0 = False 或 XML 索引。

NULL = 輸入無效。
IsHypothetical 索引是假設的,無法直接當作資料存取路徑來使用。 假設的索引用來存放資料行層級的統計資料,由 Database Engine Tuning Advisor 來維護和使用。 1 = True

0 = False 或 XML 索引

NULL = 輸入無效。
IsPadIndex 索引指定每個內部節點保留開啟狀態的空間。 適用於:SQL Server 2008 (10.0.x) 和更新版本。

1 = True

0 = False 或 XML 索引。
IsPageLockDisallowed ALTER INDEX 的 ALLOW_PAGE_LOCKS 選項所設定的頁面鎖定值。 適用於:SQL Server 2008 (10.0.x) 和更新版本。

1 = 不允許頁面鎖定。

0 = 允許頁面鎖定。

NULL = 輸入無效。
IsRowLockDisallowed ALTER INDEX 的 ALLOW_ROW_LOCKS 選項所設定的資料列鎖定值。 適用於:SQL Server 2008 (10.0.x) 和更新版本。

1 = 不允許資料列鎖定。

0 = 允許資料列鎖定。

NULL = 輸入無效。
IsStatistics index_or_statistics_name 為 CREATE STATISTICS 陳述式或 ALTER DATABASE 之 AUTO_CREATE_STATISTICS 選項建立的統計資料。 1 = True

0 = False 或 XML 索引。
IsUnique 索引是唯一的。 1 = True

0 = False 或 XML 索引。
IsColumnstore 索引是 xVelocity 記憶體最佳化的資料行存放區索引。 適用於:SQL Server 2012 (11.x) 和更新版本。

1 = True

0 = False
IsOptimizedForSequentialKey 索引已啟用最後一頁插入的最佳化。 適用於:SQL Server 2019 (15.x) 和更新版本。

1 = True

0 = False

傳回型別

int

例外狀況

當發生錯誤,或呼叫端沒有檢視物件的權限時,便會傳回 NULL。

使用者只能檢視使用者擁有或被授與某些權限之安全性實體的中繼資料。 這表示發出中繼資料的內建函數 (例如,INDEXPROPERTY) 會在使用者不具有該物件任何權限時傳回 NULL。 如需相關資訊,請參閱 Metadata Visibility Configuration

範例

下列範例會針對 AdventureWorks2022 資料庫中數據表的Employee索引,傳回 IsClusteredIndexDepthIndexFillFactor 屬性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  
  
(1 row(s) affected)  

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

下列範例會檢查 FactResellerSales 資料表上其中一個索引的屬性。

-- Uses AdventureWorks  
  
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  

另請參閱

CREATE INDEX (Transact-SQL)
統計資料
sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.stats (Transact-SQL)
sys.stats_columns (Transact-SQL)