代码之家  ›  专栏  ›  技术社区  ›  Alex. S.

在PostgreSQL中使用plpgsql有哪些优点

  •  8
  • Alex. S.  · 技术社区  · 16 年前

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

    我们使用存储过程来检测中等大小数据库中几乎重复的人员记录(大约1000万条记录)。

    3 回复  |  直到 15 年前
        1
  •  8
  •   Dana the Sane    16 年前

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

    在其他语言中可能有这样的功能,但是我没有使用它们。无论如何,我希望这能为你的调查提供一个更好的起点。

        2
  •  6
  •   Pavel Stehule    15 年前

    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)的组合。

        3
  •  2
  •   decibel    16 年前

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