You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Snowflake中查询数据库/架构下所有视图的大小信息?

在Snowflake中查询指定库/架构下视图的行数或大小信息

视图本身是虚拟表,不存储物理数据,所以你在account_usage.tables、information_schema.tables里看到的bytes和row_count字段为NULL,table_storage_metrics表无视图记录,都是正常现象。要获取视图的行数或大小,需要通过以下方法:

方法一:获取所有视图的行数

单个视图查询

直接执行计数语句:

SELECT COUNT(*) AS row_count FROM DB.SCHEMA.YOUR_VIEW_NAME;

批量查询所有视图

通过生成动态SQL批量执行:

  1. 先运行以下语句生成查询脚本:
SELECT 'SELECT ''' || table_name || ''' AS view_name, COUNT(*) AS row_count FROM ' || table_catalog || '.' || table_schema || '.' || table_name || ' UNION ALL'
FROM information_schema.views
WHERE table_catalog = 'DB'
AND table_schema = 'SCHEMA';
  1. 将生成的SQL结果去掉最后一行的UNION ALL,执行后即可得到该架构下所有视图的行数。

方法二:估算视图的字节大小

如果需要获取视图结果集的字节数,可以结合RESULT_SCAN函数:

单个视图查询

  1. 先查询视图全部数据(注意大视图可能耗时):
SELECT * FROM DB.SCHEMA.YOUR_VIEW_NAME;
  1. 立即执行以下语句获取结果字节数:
SELECT SUM(BYTES) AS total_bytes FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));

批量查询所有视图

同样通过动态SQL生成脚本:

SELECT 'SELECT ''' || table_name || ''' AS view_name, (SELECT SUM(BYTES) FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))) AS total_bytes FROM ' || table_catalog || '.' || table_schema || '.' || table_name || ' UNION ALL'
FROM information_schema.views
WHERE table_catalog = 'DB'
AND table_schema = 'SCHEMA';

去掉末尾的UNION ALL后执行,即可得到每个视图结果集的字节数。

注意事项

  • 复杂视图(含JOIN、聚合等逻辑)的计数或大小估算会消耗计算资源,建议在业务低峰期执行。
  • 如果是物化视图(table_type = 'MATERIALIZED VIEW'),它会存储物理数据,可直接通过account_usage.tables或table_storage_metrics获取bytes和row_count。

内容的提问来源于stack exchange,提问作者Paradox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:16:10