最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
postgresql中position函数性能代码解析
时间:2022-06-29 10:20:09 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下postgresql中position函数性能代码解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
起因:
postgresql中position函数提供从头查找返回第一个匹配到字符串的下标。
而我需要返回从后向前查找第一个匹配到的坐标,但是postgressql并未提供相关函数,所以自己写了如下代码提供相关功能:
CREATE OR REPLACE FUNCTION lastindexof(text, character) RETURNS integer AS $BODY$ begin if $1 is null then return NULL; end if; for i in reverse length($1) .. 1 loop if substr($1,i,1) = $2 then return i; end if; end loop; return NULL; end $BODY$ LANGUAGE plpgsql IMMUTABLE STRICT
本来以为事情完美解决,但是性能的差距却让人感觉很失望,如下图
数据库原生的“position”和自己提供“lastindexof”,居然产生了30倍以上的性能差距,那么探究缘由就变成一个有意思的事情。也算第一次尝试翻阅数据库源码,中间总是有点小麻烦,不过当我找到如下代码的时候,那种恍然大悟的欣喜也算满足了自己求知欲。
注意看1054行,运用了指针~ 可见数据库底层运算,用了引用传递,而我自己写的函数是一个拷贝传递。
原因找到了,解决问题也就手到擒来,拿C写一个扩展?或者?
本可以拿C写一些底层代码练练手,不过那又需要重新编译等等,时间有限,留给以后去做吧,先想个简单的办法去解决它。
解决方法如下
select length(dir) -position('/' in reverse(dir)) +1 from log_hup_ftp_30
测试性能截图
相关文章
- 俄罗斯yandex官网入口com-俄罗斯yandex搜索引擎最新网址 05-19
- 卡片魔王风灵修改器官方下载-卡片魔王七大功能修改器风灵月影版本 05-19
- 夸克网盘入口-极速上传文件管理 05-19
- 光环:士官长合集修改器免费获取 光环3风灵月影一键下载 05-19
- 诡秘之主游戏官网入口-2026诡秘之主最新官网地址链接 05-19
- 空洞骑士丝之歌纺络珍馐任务流程如何完成 05-19


