powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / выполнение запроса в функции и вне
3 сообщений из 3, страница 1 из 1
выполнение запроса в функции и вне
    #34451544
Folibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу понять в чем прикол :(

Есть функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE OR REPLACE FUNCTION get_name(text) RETURNS text AS
$BODY$
BEGIN
	RETURN (SELECT rtrim(initcap("last_name")) || ' ' || initcap(substring("name" from  1  for  1 )) || '. ' || initcap(substring("middle_name" from  1  for  1 )) || '.' from "pacients" where "insert_date"=(select max("insert_date") from "pacients" where "ID"=$ 1 ) and "ID"=$ 1 );
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

Возвращает имя пациента в виде Иванов И.И. из таблицы пациентов по коду пациента.
Записей на один код может быть несколько. Берется последняя по дате.
По полю insert_date построен индекс.

Так вот, execution time ~ 500 ms

Но если запрос выполнить отдельно, не в функции то execution time ~ 15 ms .
В чем проблема? Почему такая разница?
...
Рейтинг: 0 / 0
выполнение запроса в функции и вне
    #34451738
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FolibisНе могу понять в чем прикол :(

Есть функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE OR REPLACE FUNCTION get_name(text) RETURNS text AS
$BODY$
BEGIN
	RETURN (SELECT rtrim(initcap("last_name")) || ' ' || initcap(substring("name" from  1  for  1 )) || '. ' || initcap(substring("middle_name" from  1  for  1 )) || '.' from "pacients" where "insert_date"=(select max("insert_date") from "pacients" where "ID"=$ 1 ) and "ID"=$ 1 );
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

Возвращает имя пациента в виде Иванов И.И. из таблицы пациентов по коду пациента.
Записей на один код может быть несколько. Берется последняя по дате.
По полю insert_date построен индекс.

Так вот, execution time ~ 500 ms

Но если запрос выполнить отдельно, не в функции то execution time ~ 15 ms .
В чем проблема? Почему такая разница?
1. А зачем этой функции быть на plpgsql? ИМХО прекрастно переписывается на sql.
2. А версия сервера какая?
3. 500 мс - это время первого выполнения? А второго? третьего?
...
Рейтинг: 0 / 0
выполнение запроса в функции и вне
    #34451779
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиск "explain function"

Как посмотреть план запроса внутри функции

EXPLAIN хранимой процедуры
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / выполнение запроса в функции и вне
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]