検索最適化による地理空間クエリの高速化¶
検索最適化サービスにより、 GEOGRAPHY オブジェクトで地理空間関数を使用する述語を使用するクエリのパフォーマンスを向上させることができます。
以下のセクションでは、地理空間クエリの検索最適化サポートに関する詳細情報を提供します。
注釈
GEOMETRY オブジェクトはまだサポートされていません。
地理空間クエリの検索最適化の実現¶
テーブルに対する地理空間クエリのパフォーマンスを向上させるには、 ALTER TABLE ... ADD SEARCH OPTIMIZATION コマンドで、特定の列に対して ON GEO 句 を使用します。テーブルレベルで検索最適化を有効にしても、地理空間データタイプの列では有効にはなりません。
例:
詳細については、 検索最適化の有効化と無効化 をご参照ください。
地理空間関数でサポートされている述語¶
次の関数を使用する述語を含むクエリの場合、
検索最適化サービスにより、次の場合にパフォーマンスを向上させることができます。
1つの入力式がテーブルの GEOGRAPHY 列であり、
もう1つの入力式が GEOGRAPHY 定数(変換またはコンストラクター関数 を介して作成)。
ST_DWITHIN の場合、距離引数は負ではない REAL 定数。
この機能には、 検索最適化サービスと同様の制限が適用 されることに注意してください。
その他のパフォーマンスの考慮事項¶
検索最適化サービスは選択性の高い述語用に設計されており、述語は地理空間オブジェクト間の近接性によってフィルターされるため、テーブル内の近接性によって地理空間オブジェクトをクラスタリングすると、パフォーマンスが向上する可能性があります。ベーステーブルが頻繁に変更されるかどうかに応じて、データをロードするときに並べ替え順序を指定するか、自動クラスタリングを使用して、データをクラスタ化できます。
- ソート済みデータのロード
ベーステーブルのデータが頻繁に変更されない場合は、データをロードするときに並べ替え順序を指定できます。その後、GEOGRAPHY 列で検索の最適化を有効にできます。例:
ベースデータに大きな変更を加えるたびに、手動でデータを並べ替えることができます。
自動クラスタリング¶
ベーステーブルが頻繁に更新される場合は、 ALTER TABLE ... CLUSTER BY ... コマンドを使用して 自動クラスタリング を有効にし、テーブルが変更されると自動的に再クラスタリングされるようにします。
次の例では、タイプ VARCHAR の新しい列 geom_geohash を追加し、その新しい列に GEOGRAPHY 列 geom のgeohashまたはH3インデックスを格納します。次に、新しい列をクラスタキーとして自動クラスタリングを有効にします。このアプローチは、変更されたテーブルの部分を自動的に再クラスター化します。
地理空間関数を使用する例¶
次のステートメントは、このセクションの例で使用されるテーブルを作成および構成します。最後のステートメントは、 ON 句を ALTER TABLE ... ADD SEARCH OPTIMIZATION コマンドで使用して、 g1 GEOGRAPHY 列の検索最適化を追加します。
サポートされている述語の例¶
次のクエリは、検索最適化サービスでサポートされているクエリの例です。検索最適化サービスにより、検索アクセスパスを使用して、このクエリのパフォーマンスを向上させることができます。
以下は、検索最適化サービスでサポートされている追加の述語の例です。
GEOGRAPHY 定数の作成例¶
以下は、 GEOGRAPHY 定数に対してさまざまな 変換関数およびコンストラクター関数 を使用する述語の例です。