PostgreSQL过程语言 – PL / pgSQL和SQL之间的差异
任何人都可以总结一下之间的区别:
http://www.postgresql.org/docs/9.1/static/xfunc-sql.html 和 http://www.postgresql.org/docs/9.1/static/plpgsql.html ? 要点: >概念差异
PL / PgSQL和普通SQL函数都是更大工具集的一部分,应该在该上下文中查看.我倾向于用升序复杂性和成本匹配的上升功率来考虑它,你应该使用最简单的工具来完成这项工作:
>尽可能使用视图 当您认为需要某个功能时,很多时候视图就足够了.即使选择整个视图的代价非常昂贵,引用视图的查询中的WHERE子句通常会被下推到视图中,并可能导致非常不同的查询计划.通过将SQL函数转换为视图,我经常获得很大的性能提升. 您发现的主要时间不能使用视图,并且应该考虑SQL函数的时间: >不能表示为简单WHERE子句的参数,如WITH表达式中的参数 对于大多数这些任务,普通的SQL函数工作正常,并且通常比PL / PgSQL更容易阅读.声明为STABLE或IMMUTABLE(也未声明为STRICT或SECURITY DEFINER)的SQL函数也可以内联到调用语句中.这消除了函数调用开销,并且当调优函数中的WHERE条件被优化器推送到SQL函数时,有时也会带来巨大的性能优势.只要它们足以完成任务,就使用SQL函数. SQL函数不能完成工作的主要时间是需要大量逻辑时.如果/ then / else操作不能表示为CASE语句,大量重复使用计算结果,从块中构建值,错误处理等等.PL / PgSQL就派上用场了.当你不能使用SQL函数或者它们不合适时选择PL / PgSQL,例如: >通过EXECUTE语句的动态SQL和动态DDL 使用公用表表达式(CTE),尤其是可写CTE和WITH RECURSIVE,我发现我使用PL / PgSQL的次数比以前少得多,因为SQL更具表现力和强大功能.我现在更多地使用视图和纯SQL函数.值得记住的是,纯SQL函数可以包含多个语句;最后一个语句是函数的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |