- スキーマ:
COLUMN_QUERY_PRUNING_HISTORY ビュー¶
このアカウント使用状況ビューを使用して、クエリ実行中のデータアクセスパターンをよりよく理解します。これには「アクセスタイプ」や 潜在的に有益な候補 検索最適化式 などの列レベルの詳細が含まれます。
このビューは TABLE_QUERY_PRUNING_HISTORY ビュー と組み合わせて使用できます。たとえば、TABLE_QUERY_PRUNING_HISTORY ビューを使用してターゲットテーブルへのアクセスを特定し、COLUMN_QUERY_PRUNING_HISTORY ビューを使用してそれらのテーブルで頻繁に使用される列を特定できます。
このビューの各行は、指定された時間間隔内の特定の列のクエリプルーニング履歴を表します。データは列ごと、テーブルごと、間隔ごとに集計され、実行されたクエリの数、スキャンされたパーティション、プルーニングされたパーティション、スキャンされた行、プルーニングされた行、一致した行などのメトリックが含まれます。
TABLE_PRUNING_HISTORY ビュー および クエリプルーニング もご参照ください。
列¶
列名 | データ型 | 説明 |
|---|---|---|
INTERVAL_START_TIME | TIMESTAMP_LTZ | クエリが実行され、完了した時間範囲の開始時刻(時間単位)。 |
INTERVAL_END_TIME | TIMESTAMP_LTZ | クエリが実行され、完了した時間範囲の終了時刻(時間単位)。 |
TABLE_ID | NUMBER | クエリされたテーブルの内部/システム生成識別子。 |
TABLE_NAME | VARCHAR | クエリされたテーブルの名前。 |
SCHEMA_ID | NUMBER | クエリされたテーブルを含むスキーマの内部/システム生成識別子。 |
SCHEMA_NAME | VARCHAR | クエリされたテーブルを含むスキーマの名前。 |
DATABASE_ID | NUMBER | クエリされたテーブルを含むデータベースの内部/システム生成識別子。 |
DATABASE_NAME | VARCHAR | クエリされたテーブルを含むデータベースの名前。 |
WAREHOUSE_ID | NUMBER | クエリの実行に使用されたウェアハウスの内部/システム生成識別子。 |
WAREHOUSE_NAME | VARCHAR | クエリを実行したウェアハウスの名前。 |
QUERY_HASH | VARCHAR | 正規化された SQL テキストに基づいて計算された ハッシュ値。 |
QUERY_PARAMETERIZED_HASH | VARCHAR | パラメーター化されたクエリに基づいて計算された ハッシュ値。 |
COLUMN_ID | NUMBER | クエリされたテーブルからアクセスされた列の内部/システム生成識別子。 |
COLUMN_NAME | VARCHAR | クエリされたテーブルからアクセスされた列の名前。 |
VARIANT_PATH | VARCHAR | アクセスされている半構造化データへのパス(該当する場合)。アクセスされた列が半構造化データ型を持たない場合はNULL。 |
ACCESS_TYPE | VARCHAR | 列で実行されるアクセスのタイプ( |
NUM_QUERIES | NUMBER | この時間範囲内に、この特定の QUERY_HASH 値を持ち、このウェアハウスを使って、このテーブルでこのタイプのアクセスでこの列(および該当する場合はバリアントパス)にアクセスしたクエリの実行数。 |
AGGREGATE_QUERY_ELAPSED_TIME | NUMBER | NUM_QUERIES で定義されたクエリの合計経過時間(ミリ秒単位)。この合計には、キューイングや、コンパイルおよび実行に関連しないその他の時間が含まれます。 |
AGGREGATE_QUERY_COMPILATION_TIME | NUMBER | NUM_QUERIES で定義されたクエリの合計コンパイル時間(ミリ秒単位)。 |
AGGREGATE_QUERY_EXECUTION_TIME | NUMBER | NUM_QUERIES で定義されたクエリの合計実行時間(ミリ秒単位)。 |
PARTITIONS_SCANNED | NUMBER | NUM_QUERIES で定義されたクエリで、このテーブルでスキャンされたパーティション数。 |
PARTITIONS_PRUNED | NUMBER | NUM_QUERIES で定義されたクエリのためにこのテーブルでプルーニングされた行の数。これらのパーティションはクエリ処理中に削除され、スキャンされなかったため、クエリの効率が向上しました。 |
ROWS_SCANNED | NUMBER | NUM_QUERIES で定義されたクエリでこのテーブルでスキャンされた行数。 |
ROWS_PRUNED | NUMBER | NUM_QUERIES で定義されたクエリでこのテーブルでプルーニングされた行数。これらの行はクエリ処理中に削除され、スキャンされなかったため、クエリの効率が向上しました。 |
ROWS_MATCHED | NUMBER | NUM_QUERIES で定義されたクエリでこのテーブルをスキャンしているときに、WHERE 句のフィルターに一致した行数。 |
SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS | ARRAY | この列でサポートされている検索最適化式のリスト。これは、NUM_QUERIESで定義されたクエリに対してこのテーブルのスキャンを高速化する可能性があります。 |
使用上の注意¶
ビューの待機時間は最大4時間です。
データは1年間保持されます。
このビューには、 ハイブリッドテーブル の排除情報は含まれません。
USAGE_VIEWER データベースロールが付与されているユーザーとロールは、このビューにアクセスできます。詳細については、 SNOWFLAKE データベースロール をご参照ください。
ACCESS_TYPE 列には、次のいずれかの値が含まれます。
このビューに表示されるアクセス動作は、実行された実際のクエリプランを反映しており、元のクエリテキストと異なる場合があります。たとえば、HAVING 句が GROUPBY 句によって生成された集計結果を参照しない場合、 最適化され、WHERE 句として書き換えられる可能性があり、ACCESS_TYPE 値は``WHERE`` になります。
プッシュダウンの最適化のメリットが得られない複雑なフィルタリング条件の場合、フィルタリング条件に一致しない行でも、テーブルスキャン操作中にフィルタリングされないことがあります。したがって、これらの行は ROWS_MATCHED の値にカウントされます。
現在、 SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS 列は、EQUALITY および SUBSTRING:ref:`検索メソッド <label-alter_table_searchoptimizationaction>`のみを提案します。
このビューには、クエリごとに実行時間の長い上位1,000件のテーブルスキャンのデータが保持されます。非常に複雑なクエリだけがこのスキャン数を超えるため、データが省略されることはほとんどありません。
例¶
指定した日について、特定のテーブルに対するクエリの列レベルのプルーニング履歴を返します。
SELECT interval_start_time, table_name, column_name, access_type, num_queries, rows_scanned, rows_pruned, rows_matched, search_optimization_supported_expressions::VARCHAR as search_optim FROM SNOWFLAKE.ACCOUNT_USAGE.COLUMN_QUERY_PRUNING_HISTORY WHERE interval_start_time like '2025-04-24%' AND table_name='SENSOR_DATA_TS' ORDER BY 3, 1; +-------------------------------+----------------+-------------+-------------+-------------+--------------+-------------+--------------+-----------------------------+ | INTERVAL_START_TIME | TABLE_NAME | COLUMN_NAME | ACCESS_TYPE | NUM_QUERIES | ROWS_SCANNED | ROWS_PRUNED | ROWS_MATCHED | SEARCH_OPTIM | |-------------------------------+----------------+-------------+-------------+-------------+--------------+-------------+--------------+-----------------------------| | 2025-04-24 14:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 5 | ["EQUALITY(\"DEVICE_ID\")"] | | 2025-04-24 14:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 5 | ["EQUALITY(\"DEVICE_ID\")"] | | 2025-04-24 15:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] | | 2025-04-24 15:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] | | 2025-04-24 15:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 5 | ["EQUALITY(\"DEVICE_ID\")"] | | 2025-04-24 15:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] | | 2025-04-24 19:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] | | 2025-04-24 19:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 3262387 | NULL | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 2678400 | 2678400 | 394106 | NULL | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 1227686 | NULL | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 2678400 | 2678400 | 216642 | NULL | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 2678400 | 2678400 | 216642 | NULL | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 1227686 | NULL | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 820272 | NULL | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 3262387 | NULL | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 3262387 | NULL | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 1227686 | NULL | | 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 2678400 | 2678400 | 216642 | NULL | +-------------------------------+----------------+-------------+-------------+-------------+--------------+-------------+--------------+-----------------------------+ このクエリの sensor_data_ts テーブルには、5356800 行の合成時系列データが含まれています。テーブルの行のちょうど半分(2678400)が、WHERE 句の条件で device_id および temperature 列 をフィルターしたクエリ数に対してプルーニングされました。
その device_id 列は、EQUALITY 検索メソッドを使用する検索最適化のターゲットとして提案されます。テーブルスキャンは、この検索最適化の追加によりメリットを受ける可能性があります。
Tip
ARRAY_TO_STRING 関数を使用してSEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS列を文字列に変換し、読みやすくできます。例:
ARRAY_TO_STRING(search_optimization_supported_expressions, ', ')