首页 > 数据库 >PostgreSql通过创建外部表而非dblink使访问速度提高,优化sql查询速度

PostgreSql通过创建外部表而非dblink使访问速度提高,优化sql查询速度

时间:2023-06-19 16:14:53浏览次数:55  
标签:表而非 PostgreSql name text 访问速度 nav varchar role id

resourceregister库

外部表创建

-- 导入插件
create extension postgres_fdw;
-- 创建服务名称为 operation 的服务 host为ip port为端口 dbname为数据库名称
create server operation foreign data wrapper postgres_fdw options (host 'localhost', port '5432', dbname 'operation');
-- 创建 mapping 
create user mapping for public server operation options (user 'postgres', password 'Szrzyj@123');


-- 创建外部表 schema_name为模式 table_name为表名称
create foreign table t_app_navigation (
navid			varchar	(50), 
sysid			varchar	(50),
nav_name		varchar	(200),
nav_code		varchar	(200),
nav_order		int4	,
url				varchar	(500),
pid				varchar	(50),
nav_description	varchar	(500),
nav_icon		text  
) server operation options (schema_name 'public', table_name 't_app_navigation');
-- 创建完成后直接查询查看是否可以查询到 判断创建是否成功
select *from t_app_navigation

create foreign table t_id_re_role_fun (
id	varchar		(50),
role_id	varchar	(50),
fun_id	varchar	(50),
opt_ids	varchar	(500)
) server operation options (schema_name 'public', table_name 't_id_re_role_fun');

create foreign table t_id_re_role_fun (
id	varchar		(50),
role_id	varchar	(50),
fun_id	varchar	(50),
opt_ids	varchar	(500)
) server operation options (schema_name 'public', table_name 't_id_re_role_fun');


create foreign table t_app_system (
id			varchar	(50),
name		varchar	(100),
sys_code	varchar	(50),
sys_order	numeric	,
url			varchar	(500),
remark		varchar	(500),
sys_gradecode	varchar	(255)

) server operation options (schema_name 'public', table_name 't_app_system');



create foreign table t_app_re_nav_fun (
id	varchar	(255),
navid	varchar	(255),
funid	varchar	(255)

) server operation options (schema_name 'public', table_name 't_app_re_nav_fun');


create foreign table t_app_function (
id			varchar	(50),
name		varchar	(200),
fun_code	varchar	(50),
fun_order	numeric	,
url			varchar	(500),
pid			varchar	(50),
opt_ids		varchar	(500),
remark		varchar	(500),
fun_icon	bytea	,
fun_type	varchar	(255)
) server operation options (schema_name 'public', table_name 't_app_function');

view_t_app_navigtion_auth 视图创建

 SELECT t.navid,
    t.sysid,
    t.nav_name,
    t.sys_code,
    t.nav_code,
    t.nav_order,
    t.nav_icon,
    t.nav_description,
    t.url,
    t.pid,
    t.user_id
   FROM ( SELECT n.navid,
            n.sysid,
            n.nav_name,
            s.sys_code,
            n.nav_code,
            n.nav_order,
            n.nav_icon,
            n.nav_description,
                CASE
                    WHEN ((n.url)::text = ''::text) THEN ff.url
                    ELSE n.url
                END AS url,
            n.pid,
            string_agg((r.user_id)::text, ','::text) AS user_id
           FROM (((((t_app_navigation n
             LEFT JOIN t_id_re_role_fun f ON (((n.navid)::text = (f.fun_id)::text)))
             LEFT JOIN t_id_re_user_role r ON (((r.role_id)::text = (f.role_id)::text)))
             LEFT JOIN t_app_system s ON (((s.id)::text = (n.sysid)::text)))
             LEFT JOIN t_app_re_nav_fun rf ON (((rf.navid)::text = (n.navid)::text)))
             LEFT JOIN t_app_function ff ON (((rf.funid)::text = (ff.id)::text)))
          GROUP BY n.navid, n.sysid, n.nav_name, s.sys_code, n.nav_code, n.nav_order, n.nav_description, n.nav_icon, n.url, ff.url, n.pid) t

view_t_app_role_resource 视图创建

 SELECT t.id,
    t.role_id,
    t.data_id,
    t.auth_scope,
    (t.invalid_time)::text AS invalid_time,
    t.user_id
   FROM ( SELECT a.id,
            a.role_id,
            a.data_id,
            a.auth_scope,
            a.invalid_time,
            string_agg((r.user_id)::text, ','::text) AS user_id
           FROM (t_re_role_resource a
             LEFT JOIN t_id_re_user_role r ON (((r.role_id)::text = (a.role_id)::text)))
          GROUP BY a.id, a.role_id, a.data_id, a.auth_scope, a.invalid_time) t

标签:表而非,PostgreSql,name,text,访问速度,nav,varchar,role,id
From: https://www.cnblogs.com/ideaAI/p/17491369.html

相关文章

  • PostgreSQL
    PostgreSQLPostgreSQL的介绍开源的关系型数据库官方社区网址:https://www.postgresql.org/中文社区网址:http://www.postgres.cn/docs/12/1.支持大部分SQL标准并且提供了许多现代特性:复杂查询外键触发器可更新视图事务完整性多版本并发控2.P......
  • macOS 安装 postgreSQL
    PostgreSQLDocumentationbrewinstallpostgresqlbrewservicesstartpostgresqlcreatedb#Bydefault,adatabasewiththesamenameasthecurrentuseriscreated.#dropdbpsql......
  • PostgreSQL 已领先于 MySQL 成为开发人员的首选
    一项针对90,000名开发人员的调查显示,PostgreSQL领先于MySQL作为数据库引擎的选择,与去年的同一项调查相比有显着变化。2023年5月的调查由开发人员问答网站StackOverflow进行,有45.55%的受访者使用PostgreSQL,而MySQL和SQLite分别为41.09%和30.9%。三年前,同一......
  • Postgresql 时间相减
    参考:https://blog.csdn.net/liubl2011/article/details/84079478select(extract(epochfromcast(t.pgtimeastimestamp))-extract(epochfromcast(t.inserttimeastimestamp)))/60asdddfromtable_baset--实体表where(extract(epochfromcast(t.pgtimeastimes......
  • PostgreSQL技术大讲堂 - 第19讲:冻结TXIDS概述
     PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUGPG技术大讲堂。第19讲:冻结TXIDS内容1:PostgreSQLTXID介绍内容2:PostgreSQLTX......
  • PostgreSql: 安装与链接
    环境介绍使用宝塔面板,在阿里云中安装PostgreSql,并使用DataGrip在本地进行链接postgresql配置安装postgresql在宝塔中安装postgresql管理器在此处点击安装postgresql,我安装的是14.2。各位可以自行选择之后等待安装完成即可修改配置文件修改postgresql.conf修改pg_h......
  • Postgresql中的表结构和数据同步/数据传输到Mysql
    场景Postgresql中的某个表,需要连同表结构以及表数据同步一次到Mysql数据库中。一种方式是在Postgresql中将表sql导出,然后修改sql文件语法,再导入到mysql中。但是这种方式过于复杂,可以借助于Navicat等工具。如果是使用Navicat进行结构同步和数据同步时,需要两边是同类型的数据库......
  • postgresql中根据上次的查询结果循环插入
    循环插入DO$$DECLAREtmpRECORD;BEGINFORtmpINselectdistinctidfromtestLOOPINSERTINTOtest1(id,role_code,privilege_code,space_id)VALUES(FLOOR(random()*2147483646),'COMMON_USER','test',tmp.......
  • PostgreSQL技术大讲堂 - 第18讲:Tuning Autovacuum
     PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUGPG技术大讲堂。Part18:Vacuum空间管理工具内容1:什么是autovacuum?内容2:为什......
  • CentOS 安装PostgreSQL 9.1
    PostgreSQL通常也简称Postgres,是一个关系型数据库管理系统,适用于各种Linux操作系统、Windows、Solaris、BSD和MacOSX。PostgreSQL遵循PostgreSQL许可,是一个开源软件。PostgreSQL由PostgreSQL全球开发组开发,由极少数的公司志愿组成并进行监督管理,这些公司有红帽、EnterpriseDB等......