TABLE_QUERY_PRUNING_HISTORY 视图¶
使用此 Account Usage 视图可以更好地了解查询执行期间的数据访问模式。
您可以将此视图与 COLUMN_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 |
根据参数化查询计算的 哈希值。 |
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 子句筛选器相匹配的行数。 |
使用说明¶
视图的延迟时间最长可达 4 小时。
数据保留 1 年。
此视图不包括 混合表 的修剪信息。
对于无法从下推优化中受益的复杂筛选条件,即便行与筛选条件不匹配,在表扫描操作期间也可能不会筛选掉这些行。因此,这些行计入 ROWS_MATCHED 值。
被授予 USAGE_VIEWER 数据库角色的用户和角色可以访问此视图。有关更多信息,请参阅 SNOWFLAKE 数据库角色。
此视图会保留每个查询运行时间最长的 1,000 次表扫描的数据。只有复杂度极高的查询才会超过此扫描次数,因此很少会有数据会被忽略。
示例¶
第一个查询是一个简单的功能示例,它会返回在至少修剪了一行的特定日期内,针对特定表的查询的修剪历史记录。对于在 WHERE 子句 (INTERVAL_START_TIME) 中指定的日期完成的查询,结果中的每一行都属于一个特定的一小时时间窗口。
此查询中的 sensor_data_ts
表包含 5356800 行的合成时间序列数据。对于此处显示的所有查询,表中都恰好有一半的行 (2678400) 被修剪。这些查询的匹配行数有所不同。
SELECT interval_start_time, interval_end_time, table_id, table_name,
num_queries, query_hash, rows_scanned, rows_pruned, rows_matched
FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_QUERY_PRUNING_HISTORY
WHERE interval_start_time LIKE '2025-04-24%'
AND table_name='SENSOR_DATA_TS'
AND rows_pruned > 0
ORDER BY 1;
+-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+
| INTERVAL_START_TIME | INTERVAL_END_TIME | TABLE_ID | TABLE_NAME | NUM_QUERIES | QUERY_HASH | ROWS_SCANNED | ROWS_PRUNED | ROWS_MATCHED |
|-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------|
| 2025-04-24 14:00:00.000 -0700 | 2025-04-24 15:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 833f4ec4ebbda62c7882e1839faec799 | 2678400 | 2678400 | 5 |
| 2025-04-24 14:00:00.000 -0700 | 2025-04-24 15:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 94d16d2fa0892247d27066e45b58d3e4 | 2678400 | 2678400 | 5 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 24e89f5c01209d7b395f56559f893dc8 | 2678400 | 2678400 | 2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 71c9c6570ef849e66f83af0625b793a2 | 2678400 | 2678400 | 2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | c75cb64d446c1ba222ac14ebd1923641 | 2678400 | 2678400 | 2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 5a3784c59fc788804c903d96698dd969 | 2678400 | 2678400 | 5 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 069a076d4d6850e3d242fccf498c7c6d | 2678400 | 2678400 | 216642 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 4c9c5aacb7a61fc6858d107c5c46fb14 | 2678400 | 2678400 | 216642 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 3e509721380b262906c62c76107e46c9 | 2678400 | 2678400 | 2678400 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 9f7e607fe48faa18e332f65cde49f037 | 2678400 | 2678400 | 2678400 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | b4488d8a84ab18b00dd6b2fead4a4cb4 | 2678400 | 2678400 | 394106 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 157d775a79c5bae120fb5db9f7d8d027 | 2678400 | 2678400 | 216642 |
+-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+
以下示例计算每个表的“修剪率”,以帮助确定给定时间在给定仓库上运行的查询的修剪效率。该查询还会返回由每个查询扫描的分区数,这有助于了解查询性能与必须扫描的数据量之间的关系。
考虑到此查询的结果,用户可能会得出结论,尽管 sensor_data_ts
访问次数远远超过 sensor_data1
,但这些查询通常花费的时间更少,扫描的微分区数量也要少得多。
SELECT
SUM(total_execution_time) as sum_exec_time,
SUM(num_queries) as sum_num_queries,
SUM(partitions_pruned)/SUM(partitions_pruned+partitions_scanned) AS pruning_ratio,
SUM(partitions_scanned)/SUM(num_queries) AS partitions_scanned_per_query,
table_name,
schema_name,
database_name
FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_QUERY_PRUNING_HISTORY
WHERE interval_start_time > '2025-04-25 12:00:00.000 -0700'
AND warehouse_name = 'SENSORS_WH'
GROUP BY ALL
ORDER BY 1 DESC;
+---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+
| SUM_EXEC_TIME | SUM_NUM_QUERIES | PRUNING_RATIO | PARTITIONS_SCANNED_PER_QUERY | TABLE_NAME | SCHEMA_NAME | DATABASE_NAME |
|---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------|
| 1938743 | 19283 | 0.230000 | 1800.000000 | SENSOR_DATA1 | SENSORS_SCHEMA | SENSORS_DB |
| 123732 | 39320 | 0.950000 | 12.000000 | SENSOR_DATA_TS | SENSORS_SCHEMA | SENSORS_DB |
+---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+