30 JSONデータの索引
関数ベースの索引を使用すると、JSONデータのスカラー値を索引付けできます。また、JSON検索索引を定義できます。これは、非定型の構造的問合せと全文問合せの両方に便利です。
- JSONデータの索引付けの概要
関数ベースの索引を使用して、JSONデータ内の特定のスカラー値を索引付けできます。非定型の構造的問合せおよび全文問合せ用に、JSON検索索引を使用して通常の方法でJSONデータを索引付けできます。 - JSONデータに対して関数ベースの索引が選択されるかどうかを確認する方法
特定の問合せに対して特定の索引が選択されるかどうかは、オプティマイザによって決定されます。特定の問合せで特定の関数ベースの索引が選択されるかどうかを確認するには、問合せの実行計画内で索引名を検索します。 - JSON_VALUEのためのビットマップ索引の作成
SQL/JSONファンクションjson_value
のためにビットマップ索引を作成できます。ビットマップ索引は、問合せが小さいセットのJSON値のみを対象にしている場合に適しています。 - JSON_VALUEのためのBツリー索引の作成
SQL/JSONファンクションjson_value
のために、Bツリーの関数ベースの索引を作成できます。これを行うには、標準構文を使用してjson_value
を明示的に指定するか、項目メソッドを持つドット表記法構文を使用できます。これらいずれかの方法で作成された索引は、ドット表記法問合せとjson_value
問合せのどちらとも一緒に使用できます。 - JSON_VALUE関数ベースの索引とJSON_TABLE問合せの使用
ERROR ON ERROR
を指定したjson_value
を使用して作成された索引は、json_table
を含む問合せに使用できます。この場合、この索引が索引付きパスに対する制約として機能することで、JSONデータ内の項目ごとに必ず1つの(非null
)スカラーJSON値のみが投影されるようになります。 - JSON_VALUE関数ベースの索引とJSON_EXISTS問合せの使用
ERROR ON ERROR
を指定したSQL/JSONファンクションjson_value
を使用して作成された索引は、SQL/JSON条件json_exists
を含む問合せに使用できます。 - JSON_VALUEの索引付けおよび問合せに関するデータ型の考慮事項
SQL/JSONファンクションjson_value
を使用して作成されたファンクション・ベースの索引では、問合せでjson_value
によって返されたデータ型が索引で指定された型と一致する必要があります。 - JSON_EXISTSの複数値関数ベースの索引の作成
JSON
データ型として格納されるJSONデータの場合、SQL/JSON条件json_exists
に複数値関数ベースの索引を使用できます。このような索引は、スカラーJSON値を個別に、またはJSON配列内で対象とします。 - 複数値関数ベースの索引の使用
WHERE
句のjson_exists
問合せでは、対象とするデータが索引に指定されたスカラー型と一致する場合(かつその場合にかぎり)、複数値関数ベースの索引を選択できます。 - コンポジットBツリー索引を使用した複数のJSONフィールドの索引付け
JSONオブジェクトの複数のフィールドに索引を付けるには、SQL/JSONファンクションjson_value
またはドット表記法構文で複数のパス式を使用してコンポジットBツリー索引を作成できます。 - 非定型の問合せおよび全文検索のためのJSON検索索引
JSON検索索引は、一般的な索引です。この検索索引によって、(1)非定型の構造的問合せ、つまり、定期的には予測または使用されない可能性のある問合せと、(2)全文検索の両方のパフォーマンスを向上させることができます。これは、JSONデータでの使用に特化して設計されたOracle Text索引です。
親トピック: JSON用のパフォーマンス・チューニング