TABLE_PRUNING_HISTORY 视图¶
此 Account Usage 视图可用于确定所有表的修剪效率,并了解表的默认(自然)数据排序如何影响修剪。
您可以将修剪的分区数量 (PARTITIONS_PRUNED
) 与扫描和修剪的分区总数 (PARTITIONS_SCANNED + PARTITIONS_PRUNED
) 进行比较。
您还可以使用此视图比较在为表启用 自动聚类 和 搜索优化 之前和之后的修剪效果。
列¶
列名称 |
数据类型 |
描述 |
---|---|---|
START_TIME |
TIMESTAMP_LTZ |
执行查询的时间范围(以小时为单位)的开始时间。 |
END_TIME |
TIMESTAMP_LTZ |
执行查询的时间范围(以小时为单位)的结束时间。 |
TABLE_ID |
NUMBER |
已查询表的内部/系统生成的标识符。 |
TABLE_NAME |
TEXT |
被查询表的名称。 |
SCHEMA_ID |
NUMBER |
包含被查询表的架构的内部/系统生成的标识符。 |
SCHEMA_NAME |
TEXT |
包含被查询表的架构的名称。 |
DATABASE_ID |
NUMBER |
包含被查询表的数据库的内部/系统生成的标识符。 |
DATABASE_NAME |
TEXT |
包含被查询表的数据库的名称。 |
NUM_SCANS |
NUMBER |
在 START_TIME 和 END_TIME 窗口期间,所有查询(包括 SELECT 语句和 DML 语句)对表执行的扫描操作数量。请注意,某个查询可能会对同一个表进行多次扫描操作。 |
PARTITIONS_SCANNED |
NUMBER |
|
PARTITIONS_PRUNED |
NUMBER |
在 |
ROWS_SCANNED |
NUMBER |
在 |
ROWS_PRUNED |
NUMBER |
在 |
使用说明¶
视图的延迟时间最长可达 6 小时。
此视图不包括 混合表 的修剪信息。
示例¶
列出过去七天内修剪效率最差的五个表:
SELECT
table_id,
ANY_VALUE(table_name) AS table_name,
SUM(num_scans) AS total_num_scans,
SUM(partitions_scanned) AS total_partitions_scanned,
SUM(partitions_pruned) AS total_partitions_pruned,
SUM(rows_scanned) AS total_rows_scanned,
SUM(rows_pruned) AS total_rows_pruned
FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_PRUNING_HISTORY
WHERE start_time >= DATEADD(day, -7, CURRENT_TIMESTAMP())
GROUP BY table_id
ORDER BY
total_partitions_pruned / GREATEST(total_partitions_scanned + total_partitions_pruned, 1),
total_partitions_scanned DESC
LIMIT 5;
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+
| TABLE_ID | TABLE_NAME | TOTAL_NUM_SCANS | TOTAL_PARTITIONS_SCANNED | TOTAL_PARTITIONS_PRUNED | TOTAL_ROWS_SCANNED | TOTAL_ROWS_PRUNED |
|----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------|
| 308226 | SENSOR_DATA_TS | 11 | 21 | 1 | 52500000 | 2500000 |
| 185364 | MATCH | 16 | 14 | 2 | 240968 | 34424 |
| 209932 | ORDER_HEADER | 2 | 300 | 56 | 421051748 | 75350790 |
| 209922 | K7_T1 | 261 | 261 | 52 | 30421 | 3272 |
| 338948 | SENSOR_DATA_TS | 9 | 15 | 3 | 38880000 | 8035200 |
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+
当扫描分区的数量和修剪分区的数量之和为零时,上述示例使用 GREATEST 来避免发生除以零的情况。