暂无图片
Postgresql 的function 有什么参数可以优化的吗?
我来答
分享
lovely girl
2022-03-04
Postgresql 的function 有什么参数可以优化的吗?

同样的sql查询,包装在function里面要比直接查询慢50%左右

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
彭冲

有两个方法:一个是编程得语言可以选择SQL和Pl/pgsql,另一个方面是与函数的稳定性参数有关。

下面有一篇关于创建索引的文章,你可以参考下使用函数及表达式索引部分。

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
lovely girl
题主
2022-03-04
谢谢大佬
DarkAthena

postgresql的function的确有很多参数可以优化性能,比如cost、IMMUTABLE、PARALLEL 等等。

function的语法

CREATE [ OR REPLACE ] FUNCTION name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] ) [ RETURNS rettype | RETURNS TABLE ( column_name column_type [, ...] ) ] { LANGUAGE lang_name | TRANSFORM { FOR TYPE type_name } [, ... ] | WINDOW | IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | PARALLEL { UNSAFE | RESTRICTED | SAFE } | COST execution_cost | ROWS result_rows | SUPPORT support_function | SET configuration_parameter { TO value | = value | FROM CURRENT } | AS 'definition' | AS 'obj_file', 'link_symbol' } ...
复制

详见官方文档
http://postgres.cn/docs/13/sql-createfunction.html

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
postgreSQL 中怎么解决count(*)特别慢这个问题?
回答 4
执行计划看下?
postgresql可以迁移到sql server吗?
回答 2
已采纳
可以,参考https://blog.csdn.net/zjzytnn/article/details/90747510
postgresql 默认访问端口是5432;能开多个端口访问吗?
回答 1
已采纳
postgresql一个数据库实例只支持一个端口访问。
crate user 的WITH ENCRYPTED PASSWORD 和with password的区别
回答 1
方括号是可选的意思,创建用户时不论是否添加encrypted关键字,密码始终以加密方式(加密算法由passwordencryption参数配置决定)存储在系统目录(pgauthid)中,ENCRYPT
postgresql中查看所有表名、大小,并按表由大到小的顺序排列,如何实现?
回答 1
已采纳
试试看selectrelname,pgsizepretty(pgrelationsize(relid))frompgstatusertableswhereschemaname'public'order
postgreSQL 用dblink如果做数据同步的时候,参数如果放到dblink外面,dblink('select * from test ')where id =**会很慢,该如何进行优化?
回答 2
dblink就不适合做数据同步,数据同步考虑一些CDC软件吧。
PostgreSQL Varchar类型最大存储多少字节内容?
回答 1
varchar(n)n代表字符个数(010485760),而非字节大小
从oracle迁移到pg,有几百个表,有200多GB。怎么迁移速度快点?
回答 1
用ogg21c
postgreSQL 增列,如果有值,是不是都相当于UPDATE了一次?
回答 1
增列说明没列,没列也能有值吗?不懂哎
在postgresql 表中建了一个check约束使用了like判断: check (name like '[0-9]'); 结果insert into 表名 values('0'); 执行报错:违反了检醒约束
回答 1
已采纳
可以使用similarto方法替换like(postgres@[local])[sbtest]14:01:15createtabletlike(idint,namevarchar(20)check(n
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~