参照する列すべてを指定してVCIインデックスを定義することで、VCIを利用した高速な集計が可能となります。
VCIを利用した検索が可能になる条件を以下に説明します。
なお、通常のインデックスと同じく、VCIを利用するかはコスト計算により判断されます。このため、VCIが利用可能な場合でも、他の実行計画の方がコストが低い場合は、その計画が選択されます。
VCIが選択されるSQL文
一般的なSELECT文のほかに、以下のSQL文でもVCIを利用することができます。ただし、“VCIが選択されない条件”に該当する場合は、VCIを利用しません。
SELECT INTO ~
CREATE TABLE AS SELECT ~
CREATE MATERIALIZED VIEW ~ AS SELECT ~
CREATE VIEW ~ AS SELECT ~
COPY (SELECT ~) TO ~
VCIが選択されない条件
以下の条件の場合には、VCIを利用しません。
親問い合わせの列を参照する副問い合わせを指定している
ロック処理句(FOR UPDATEなど)を指定している
スクロール可能、またはWITH HOLDを指定したカーソルを使用している
トランザクションの隔離レベルがSERIALIZABLEである
“VCIが利用されない関数と演算子”に示した関数、または演算子を指定している
ユーザ定義関数を指定している
分類 | 関数/演算子 | |
---|---|---|
算術関数と演算子 | 乱数関数 | random、setseed |
文字列関数と演算子 | 文字列関数 | 引数の書式を指定したformat、regexp_matches、regexp_split_to_array、regexp_split_to_table |
日付/時刻関数と演算子 | 日付/時刻関数 | age(timestamp)、current_date、current_time、current_timestamp、localtime 、localtimestamp、statement_timestamp、transaction_timestamp |
遅延実行関数 | pg_sleep、pg_sleep_for、pg_sleep_until | |
列挙型サポート関数 | すべての関数と演算子 | |
幾何関数と演算子 | すべての関数と演算子 | |
ネットワークアドレス関数と演算子 | すべての関数と演算子 | |
テキスト検索関数と演算子 | すべての関数と演算子 | |
XML関数 | すべての関数 | |
JSON関数と演算子 | すべての関数と演算子 | |
シーケンス操作関数 | すべての関数 | |
配列関数と演算子 | すべての関数と演算子 | |
範囲関数と演算子 | すべての関数と演算子 | |
集約関数 | 汎用集約関数 | array_agg、json_agg、json_object_agg、string_agg、xmlagg |
統計処理用の集約関数 | corr、covar_pop、covar_samp、regr_avgx、regr_avgy、regr_count、regr_intercept、regr_r2、regr_slope、regr_sxx、regr_sxy、regr_syy | |
順序集合集約関数 | すべての関数 | |
仮定集合集約関数 | すべての関数 | |
ウィンドウ関数 | すべての関数 | |
副問い合わせ式 | 左辺に行コンストラクタを指定した副問い合わせ式 | |
行と配列の比較 | 行コンストラクタ、複合型の比較 | |
集合を返す関数 | すべての関数 | |
システム情報関数 | すべての関数 | |
システム管理関数 | すべての関数 | |
トリガ関数 | すべての関数 | |
セション情報関数 | current_role、current_user |