我注意到,对于 PostgreSQL 中的表(或视图或物化视图),pg_depend 中有一行将表的 pg_class 行与其模式的 pg_namespace 行链接起来。
但是,我想知道是否存在这样的情况:pg_depend 中的一行可以将 pg_class 行链接到它不在其中的模式的 pg_namespace 行。
这是在如何在不顺序扫描 pg_class 的情况下列出模式中的表?的上下文中,我试图找到一个有效的查询来查找模式中的表,我想知道我是否必须处理这种情况。
我注意到,对于 PostgreSQL 中的表(或视图或物化视图),pg_depend 中有一行将表的 pg_class 行与其模式的 pg_namespace 行链接起来。
但是,我想知道是否存在这样的情况:pg_depend 中的一行可以将 pg_class 行链接到它不在其中的模式的 pg_namespace 行。
这是在如何在不顺序扫描 pg_class 的情况下列出模式中的表?的上下文中,我试图找到一个有效的查询来查找模式中的表,我想知道我是否必须处理这种情况。
我无法证明这一点,但我认为如果将查询限制
pg_depend
为正常依赖项并添加正确的目录,则查询应该是安全的并使用索引扫描:该查询可以使用
pg_depend_reference_index
on(refclassid, refobjid, refobjsubid)
。与顺序扫描相比,这是否是一个巨大的优势
pg_class
尚不清楚。如果您有大量的架构,那么它可能要好得多,这可能是一个值得怀疑的设计。