Spatial and GraphのPL/SQL Application Program Interface (API)には、いくつかの演算子と多くのプロシージャおよびファンクションが含まれています。
SDO_FILTERやSDO_RELATEなどの空間演算子では、空間索引を使用するため、パフォーマンスが最適化されます。(空間演算子では、最初のパラメータのジオメトリ列に、空間索引が定義されている必要があります。)空間演算子は、問合せのWHERE句で使用する必要があります。演算子の最初のパラメータには検索するジオメトリ列を指定し、2番目のパラメータには問合せウィンドウを指定します。問合せウィンドウとジオメトリ列の座標系が異なる場合は、Spatial and Graphによって暗黙的な座標系変換が実行されます。空間演算子の詳細は、「空間演算子」を参照してください。
空間プロシージャと空間ファンクションは、PL/SQLパッケージ内のサブプログラム(SDO_GEOM、SDO_CS、SDO_LRSなど)として提供されます。これらのサブプログラムでは、空間索引を定義する必要がなく、空間索引を定義しても使用されません。これらのサブプログラムは、WHERE句または副問合せで使用できます。空間プロシージャまたは空間ファンクションで2つのジオメトリが入力パラメータとして使用される場合は、両方のジオメトリの座標系が同じである必要があります。
注意:
Spatial and Graphの演算子やサブプログラムに対する文字列(VARCHAR2)パラメータの中に数値がある場合は、ロケールにかかわらず、小数点にはピリオド(.)を使用する必要があります。例: 'distance=3.7'
空間演算子、空間プロシージャおよび空間ファンクションを使用する場合、パフォーマンスに関する次のガイドラインに従ってください。
演算子と、プロシージャまたはファンクションが比較可能な操作を実行し、その演算子が要件を満たす場合は、その演算子を使用します。たとえば、特に必要がないかぎり、SDO_GEOM.RELATEではなくSDO_RELATEを使用し、SDO_GEOM.WITHIN_DISTANCEではなくSDO_WITHIN_DISTANCEを使用します。
演算子には、常に大文字のTRUE
を指定します。つまり、<> 'FALSE'
や= 'true'
ではなく、= 'TRUE'
を指定します。
問合せウィンドウが表から取り出された場合は、演算子に/*+ ORDERED */
オプティマイザ・ヒントを使用します。(複数のウィンドウが表から取り出された場合は、このヒントを使用する必要があります。)詳細は、各演算子の「使用上の注意」および「例」を参照してください。
トポロジで演算子を使用する方法は、『Oracle Spatial and Graphトポロジ・データ・モデルおよびネットワーク・データ・モデル・グラフ開発者ガイド』を参照してください。