8

除了语法糖和表达能力之外,运行时效率的差异是什么。我的意思是,plpgsql 可以比 plpythonu 或 pljava 更快?还是它们都大致相等?

我们正在使用存储过程来检测中等大小的数据库(大约 10M 的记录)中几乎重复的人员记录

4

3 回答 3

8

我相信 plpgsql 提供了更高的类型安全性,如果您想使用两个相似类型的不同列(如 varchar 和 text 或 int4 和 int8)执行操作,则必须执行显式转换。这很重要,因为如果您需要存储的 proc 使用索引,postgres 要求类型在连接条件之间完全匹配(编辑:我认为也用于相等性检查)。

其他语言可能有这个功能,但我没有使用过。无论如何,我希望这能为您的调查提供一个更好的起点。

于 2008-10-29T15:54:59.850 回答
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)。

于 2009-11-22T20:44:25.147 回答
3

如果不进行实际测试,我希望 plpgsql 比其他语言更高效,因为它很小。话虽如此,请记住 SQL 函数可能比 plpgsql 更快,如果一个函数足够简单,您可以只用 SQL 编写它。

于 2008-10-30T22:19:23.067 回答