INDEXPROPERTY (Transact-SQL)
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
傳回指定資料表識別碼、索引或統計資料名稱以及屬性名稱的具名索引或統計資料屬性值。 如果是 XML 索引,則傳回 NULL。
語法
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),並且可為下列其中一個值。
注意
除非另有說明,否則當 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
索引,傳回 IsClustered、IndexDepth 和 IndexFillFactor 屬性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)