除了语法糖和表现力之外,运行效率的差异是什么.我的意思是,plpgsql可以比plpythonu或pljava快吗?或者它们大致相等?
我们正在使用存储过程来检测中等大小的数据库(大约10M的记录)中几乎重复的人员记录的任务
plpgsql提供了更大的类型安全性我相信,如果要使用两个相似类型的不同列(如varchar和text或int4和int8)执行操作,则必须执行显式强制转换.这很重要,因为如果你需要让你的存储过程使用索引,postgres要求类型在连接条件之间完全匹配(编辑:对于相等性检查,我认为).
可能有其他语言的设施,但我没有使用它们.无论如何,我希望这能为您提供更好的调查起点.
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).