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

如何查询构成materialized view(物化视图)的所有关联基础表

查询物化视图底层关联表解决方案

以下是不同主流数据库的实现方案,查询结果均匹配你需要的view name | table name输出格式:

Oracle 数据库(适配你示例中的语法场景)

直接查询系统依赖视图ALL_DEPENDENCIES即可,如果你有DBA权限可替换为DBA_DEPENDENCIES查询全库范围的依赖:

-- 直接查询直接依赖的表/视图
SELECT 
  name AS "view name",
  referenced_name AS "table name"
FROM 
  all_dependencies
WHERE 
  type = 'MATERIALIZED VIEW'
  AND name = 'TABLE_VM' -- 替换为你的物化视图名称,Oracle默认大写存储
  AND referenced_type = 'TABLE';

如果物化视图嵌套了其他视图,需要递归查询到最底层的关联表,可使用以下语句:

-- 递归查询所有底层关联表(包含嵌套视图依赖的表)
SELECT 
  CONNECT_BY_ROOT name AS "view name",
  referenced_name AS "table name"
FROM 
  all_dependencies
WHERE 
  referenced_type = 'TABLE'
  START WITH type = 'MATERIALIZED VIEW' AND name = 'TABLE_VM'
  CONNECT BY PRIOR referenced_name = name AND PRIOR referenced_owner = owner;

PostgreSQL 数据库

查询系统表依赖获取结果:

-- 直接查询直接依赖的表
SELECT 
  mv.relname AS "view name",
  dep_table.relname AS "table name"
FROM 
  pg_class mv
JOIN 
  pg_depend d ON d.objid = mv.oid
JOIN 
  pg_class dep_table ON d.refobjid = dep_table.oid
WHERE 
  mv.relkind = 'm' -- 筛选物化视图
  AND mv.relname = 'table_vm' -- 替换为你的物化视图名称
  AND dep_table.relkind = 'r' -- 筛选普通表
  AND d.deptype = 'n';

MySQL 8.0+ 数据库

SELECT 
  TABLE_NAME AS "view name",
  REFERENCED_TABLE_NAME AS "table name"
FROM 
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE 
  TABLE_NAME = 'table_vm' -- 替换为你的物化视图名称
  AND REFERENCED_TABLE_NAME IS NOT NULL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:36:04