ADB物化视图和表的table_type都是BASE TABLE,如何区分呢?

ADB物化视图和表的table_type都是BASE TABLE,如何区分呢?image.png

展开
收起
真的很搞笑 2023-05-17 15:00:38 13673 分享 版权
3 条回答
写回答
取消 提交回答
  • 在 ADB 中,物化视图和普通表(BASE TABLE)在表级别的元数据信息中并没有区别,都是以 "BASE TABLE" 作为 table_type 标识。如果需要查看某张表是否是物化视图,可以通过查询该表的元数据信息(例如 sys.tables),查看是否有对应的 MV(Materialized View)属性。

    具体来说,sys.tables 中对于物化视图的元数据信息包括:

    • is_mv:该表是否为物化视图,取值为 True/False。
    • mv_def:该物化视图的定义语句(SQL),该元数据信息仅在 is_mv=True 时有意义。

    例如,可以通过以下 SQL 查询 sys.tables 中的元数据信息,查看某个表是否是物化视图:

    SELECT table_name, table_type, is_mv, mv_def FROM sys.tables WHERE table_schema='your_schema' AND table_name='your_table';
    

    其中,your_schema 和 your_table 分别为你要查询的表的名称和所在的 schema 名称。如果 is_mv=True,那么该表就是一个物化视图,同时可以通过 mv_def 元数据信息查看该物化视图的定义语句。

    2023-05-20 16:51:48
    赞同 展开评论
  • 值得去的地方都没有捷径

    在ADB中,物化视图和表的table_type都是BASE TABLE,因此无法通过table_type来区分它们。但是,可以通过以下两种方式来区分它们:

    通过查询系统表pg_class中的relkind字段来区分。物化视图的relkind值为'm',而表的relkind值为'r'。例如,执行以下查询可以列出所有的物化视图和表:

    SELECT relname, relkind FROM pg_class WHERE relkind IN ('r', 'm'); 通过查询系统表pg_matviews来列出所有的物化视图。例如,执行以下查询可以列出所有的物化视图:

    SELECT matviewname FROM pg_matviews; 如果查询结果中包含某个表名,则说明该表是一个物化视图。

    2023-05-19 19:00:00
    赞同 展开评论
  • 这里无法区分,如果想查物化视图,可以查这个表,information_schema.mv_infohttps://help.aliyun.com/document_detail/200654.html?spm=a2c4g.200661.0.0.54796726vQ9mgZ,此回答整理自钉群“云数据仓库ADB-开发者群”

    2023-05-17 15:04:41
    赞同 展开评论

阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。

收录在圈子:
+ 订阅
让用户数据永远在线,让数据无缝的自由流动

热门讨论

热门文章

还有其他疑问?
咨询AI助理