INDEXPROPERTY (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

指定されたテーブル ID 番号、インデックス名または統計名、およびプロパティ名の指定されたインデックスまたは統計プロパティ値を返します。 XML インデックスに対して NULL を返します。

Transact-SQL 構文表記規則

構文

INDEXPROPERTY ( object_ID , index_or_statistics_name , property )   

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

object_ID
インデックス プロパティ情報の提供元となるテーブルまたはインデックス付きビューのオブジェクト ID 番号を含む式です。 object_IDint です。

index_or_statistics_name
返されるプロパティ情報の基となるインデックスまたは統計の名前を含む式です。 index_or_statistics_name is nvarchar(128).

property
返されるデータベース プロパティの名前を含む式です。 property のデータ型は varchar(128) で、次のいずれかの値を指定できます。

Note

property が有効なプロパティ名でない場合、object_ID が有効なオブジェクト ID でない場合、object_ID が指定したプロパティでサポートされていないオブジェクトの種類であった場合、または呼び出し側にオブジェクトのメタデータを表示する権限がない場合は、特に指定のない限り、NULL が返されます。

プロパティ 説明
IndexDepth インデックスの深さです。 インデックス レベルの数です。

NULL = XML インデックスまたは無効な入力
IndexFillFactor インデックスが作成されたとき、または最後に再構築されたときに使用された FILL FACTOR 値です。 FILL FACTOR
IndexID 指定のテーブルまたはインデックス付きビュー上のインデックスの ID です。 インデックス 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 インデックスは仮想的であり、データへのアクセス パスとして直接使用することはできません。 仮想インデックスは、列レベルの統計を保持し、データベース エンジン チューニング アドバイザーによって管理および使用されます。 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 テーブルの PK_Employee_BusinessEntityID インデックスに関する IsClusteredIndexDepthIndexFillFactor プロパティの値が返されます。

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 テーブルのインデックスの 1 つのプロパティを調べます。

-- 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)