каковы преимущества использования plpgsql в postgresql - PullRequest
8 голосов
/ 29 октября 2008

Помимо синтаксического сахара и мощности выразительности, каковы различия в эффективности времени выполнения. Я имею в виду, plpgsql может быть быстрее, скажем, plpythonu или pljava? Или они все примерно равны?

Мы используем хранимые процедуры для задачи обнаружения почти дубликатов записей людей в базе данных среднего размера (около 10M записей)

Ответы [ 3 ]

8 голосов
/ 29 октября 2008

plpgsql обеспечивает большую безопасность типов. Я считаю, что вы должны выполнять явное приведение, если хотите выполнять операции с использованием двух разных столбцов схожего типа, таких как varchar и text или int4 и int8. Это важно, потому что если вам нужно, чтобы ваши хранимые процессы использовали индексы, postgres требует, чтобы типы точно соответствовали условиям соединения (я думаю, что для проверок на равенство тоже).

Может быть, есть возможность для этого на других языках, хотя я не использовал их. В любом случае, я надеюсь, что это даст вам лучшую отправную точку для вашего расследования.

6 голосов
/ 22 ноября 2009

plpgsql очень хорошо интегрирован с SQL - исходный код должен быть очень чистым и читаемым. Для языков SQL, таких как PLJava или PLPython, операторы 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 голосов
/ 31 октября 2008

Без реального тестирования я бы ожидал, что plpgsql будет несколько более эффективным, чем другие языки, потому что он маленький. При этом помните, что функции SQL, вероятно, будут даже быстрее, чем plpgsql, если функция достаточно проста, чтобы ее можно было написать только на SQL.

...