除了语法糖和表现力之外,运行效率的差异是什么。我的意思是,plpgsql可以比plpythonu或pljava快吗?或者它们大致相等?
我们正在使用存储过程来检测中等大小的数据库(大约10M的记录)中几乎重复的人员记录
答案 0 :(得分:8)
plpgsql提供更高的类型安全性我相信,如果要使用两个相似类型的不同列(如varchar和text或int4和int8)执行操作,则必须执行显式强制转换。这很重要,因为如果你需要让你的存储过程使用索引,postgres要求类型在连接条件之间完全匹配(编辑:对于相等检查,我认为)。
虽然可能有其他语言的设施,但我没有使用它们。无论如何,我希望这为你的调查提供了一个更好的起点。
答案 1 :(得分:6)
plpgsql与SQL很好地集成 - 源代码应该非常干净和可读。对于像PLJava或PLPython这样的SQL语言,必须隔离SQL语句 - SQL不是语言的一部分。所以你必须写更多的代码。如果你的程序有很多SQL语句,那么plpgsql程序应该更干净,更短,更快。当你的程序没有SQL语句时,外部语言的程序可以更快 - 但外部语言(解释)需要一些时间进行初始化 - 因此对于简单的任务,SQL或plpgsql语言的程序应该更快。
当您需要访问网络,访问文件系统等功能时,可以使用外部语言 - http://www.postgres.cz/index.php/PL/Perlu_-_Untrusted_Perl_%28en%29
我所知道的 - 人们通常使用PL语言的组合 - (SQL,plpgsql,plperl)或(SQL,plpgsql,plpython)。
答案 2 :(得分:2)
没有进行实际测试,我希望plpgsql比其他语言更有效,因为它很小。话虽如此,请记住,SQL函数可能比plpgsql更快,如果一个函数足够简单,你可以只用SQL编写它。