検索最適化サービス¶
検索最適化サービスは、特定の種類のルックアップクエリや分析クエリのパフォーマンスを大幅に向上させることができます。フィルタリング述語の広範なセットがサポートされています (検索最適化のメリットがあるクエリの特定 を参照)。
注釈
検索最適化を使用した場合と使用しない場合の実行時間を比較するチュートリアルを開始するには、 検索最適化を始めるにあたり をご参照ください。
検索最適化サービスは、テーブルに対する次を含む特定の型のクエリパフォーマンスを大幅に向上させることを目的としています。
テーブルに対する選択的なポイントルックアップクエリ。ポイントルックアップクエリは、1つまたは少数の異なる行のみを返します。使用例は次のとおりです。
非常に選択的なフィルターを備えた重要なダッシュボードにおいて、高速な応答時間を必要とするビジネスユーザー。
大量のデータを探索し、データの特定のサブセットを探しているデータサイエンティスト。
フィルタリング述語の広範なセットに基づいて、結果の小さなセットを取得するデータアプリケーション。
詳細については、 検索最適化によるポイントルックアップクエリの高速化 をご参照ください。
IP、 SEARCH 関数で実行される文字データ(テキスト)および SEARCH_IP アドレス検索。詳細については、 検索最適化によるテキストクエリの高速化 をご参照ください。
サブストリング検索と正規表現検索(例えば、 LIKE、 ILIKE、 RLIKE など)。詳細については、 検索最適化による部分文字列と正規表現クエリの高速化 をご参照ください。
VARIANT、 OBJECT、 ARRAY (半構造化)列の要素に対するクエリで、以下のタイプの述語を使用するもの:
等価述語。
IN述語。
ARRAY_CONTAINS を使用する述語。
ARRAYS_OVERLAP を使用する述語。
SEARCH を使って全文検索を行う述語。
部分文字列および正規表現述語。
NULL 値をチェックする述語。
詳細については、 検索最適化で半構造化データのクエリを高速化 をご参照ください。
以下のタイプの述語を使用する :doc:`構造化 ARRAY、 OBJECT、 および MAP </sql-reference/data-types-structured>`(構造化)列内の要素に対するクエリ:
等価述語。
IN述語。
部分文字列述語(STRING フィールド上)
詳細については、 検索最適化で構造化データのクエリを高速化 をご参照ください。
GEOGRAPHY 値を持つ選択された地理空間関数を使用するクエリ。詳細については、 検索最適化による地理空間クエリの高速化 をご参照ください。
検索最適化サービスの恩恵を受けられるクエリを特定したら、それらのクエリで使用される列とテーブルの 検索最適化を有効化 できます。
検索最適化サービスは、一般的にユーザーに透明性があります。クエリは、検索最適化を行わない場合と同様に機能します。高速になるものがあるだけです。しかし、検索最適化は、他の特定のテーブル操作に影響を与えます。詳細については、 検索最適化テーブルの操作 をご参照ください。
検索最適化サービスの仕組み¶
検索クエリのパフォーマンスを向上させるために、検索最適化サービスは、 検索アクセスパス と呼ばれる永続的なデータ構造を作成および維持します。検索アクセスパスは、テーブルの列のどの値が、各 マイクロパーティション で見つかるかを追跡し、テーブルをスキャンするときに一部のマイクロパーティションをスキップできるようにします。
メンテナンスサービスは、検索アクセスパスの作成と維持を担当します。
検索最適化を有効化すると、メンテナンスサービスにより、ルックアップを実行するために必要なデータが検索アクセスパスに作成され、入力されます。
テーブルのサイズによっては、検索アクセスパスの構築に非常に多くの時間が必要になる場合があります。メンテナンスサービスはこの作業をバックグラウンドで実行し、テーブルにおけるいずれの操作も阻害しません。クエリは、検索アクセスパスが完全に構築されるまで高速化されません。
テーブル内のデータが更新されると(たとえば、新しいデータセットのロードや DML 操作によって)、メンテナンスサービスは自動的に検索アクセスパスを更新し、データへの変更を反映します。
検索アクセスパスの更新中にクエリを実行した場合、クエリの実行速度が遅くなる場合がありますが、正しい結果を返します。
各テーブルのメンテナンスサービスの進行状況は、 SHOW TABLES の出力の search_optimization_progress 列に表示されます。新しく最適化されたテーブルでの検索最適化のパフォーマンス向上を測定する前に、テーブルは完全に最適化済みであるとこの列に表示されることを確認します。
検索アクセスパスのメンテナンスは透過的です。メンテナンスサービスを実行するための仮想ウェアハウスを作成する必要はありません。しかし、メンテナンスのためのストレージやコンピューティングリソースにはコストがかかります。コストの詳細については、 検索最適化のコスト見積もりおよび管理 をご参照ください。
クエリのパフォーマンスを最適化するその他のオプション¶
検索最適化サービスは、クエリのパフォーマンスを最適化するさまざまな方法の1つです。以下のリストにその他のテクニックを示します。
クエリアクセラレーション
1つ以上のマテリアライズドビュー(クラスター化または非クラスター化)を作成します。
テーブルのクラスタリング
詳細については、 クエリパフォーマンスの最適化 をご参照ください。
例¶
データがあるテーブルの作成から始めます。
ALTER TABLE を使用して SEARCH OPTIMIZATION プロパティをテーブルに追加します。
次のクエリでは、検索最適化サービスを使用できます。
次のクエリでは、暗黙的なキャストが列ではなく定数に対して行われるため、検索最適化サービスを使用できます。
次の、キャストがテーブルの列にあるため、検索最適化サービスを使用することは できません。
IN 句は、検索最適化サービスによってサポートされています。
述語が検索最適化サービスによって個別にサポートされている場合は、述語を接続詞 AND で結合でき、検索最適化サービスによって引き続きサポートされます。
DELETE および UPDATE (および MERGE)でも、検索最適化サービスを使用することができます。