- 스키마:
COLUMN_QUERY_PRUNING_HISTORY 뷰¶
이 Account Usage 뷰를 사용하면 쿼리가 실행하는 동안 “액세스 유형” 및 잠재적으로 유익한 후보 검색 최적화 식 과 같은 일부 열 수준 세부 정보를 포함한 데이터 액세스 패턴을 더 잘 이해할 수 있습니다.
이 뷰는 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 절이 GROUP BY 절에 의해 생성된 집계된 결과를 참조하지 않을 경우 최적화되고 WHERE 절로 다시 작성될 수 있으며 ACCESS_TYPE 값은
WHERE
가 됩니다.푸시다운 최적화의 이점을 누릴 수 없는 복잡한 필터링 조건의 경우, 필터링 조건과 일치하지 않더라도 테이블 스캔 작업 중에 행이 필터링되지 않을 수 있습니다. 따라서 이러한 행은 ROWS_MATCHED 값에서 계산됩니다.
현재, SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS 열은 EQUALITY 및 SUBSTRING 검색 방법 만 제안합니다.
이 뷰는 쿼리당 가장 오래 실행되는 테이블 스캔 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
테이블에는 5,356,800개 행의 합성 시계열 데이터가 포함되어 있습니다. WHERE 절 조건에서 device_id
및 temperature
열을 필터링한 여러 쿼리에 대해 테이블 행의 정확히 절반(2,678,400)이 정리되었습니다.
device_id
열은 EQUALITY 검색 방법을 사용하는 검색 최적화의 대상으로 제안됩니다. 이 검색 최적화를 추가하면 테이블 스캔 시 이점이 있을 수 있습니다.
팁
가독성을 높이기 위해 ARRAY_TO_STRING 함수를 사용하여 SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS 열을 문자열로 변환할 수 있습니다. 예:
ARRAY_TO_STRING(search_optimization_supported_expressions, ', ')