powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / SQL Function, estimate rowcount - 1000.
3 сообщений из 3, страница 1 из 1
SQL Function, estimate rowcount - 1000.
    #33296569
Paul Chabinsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не спрашивайте зачем мне такая процедура, так она выглядит для простоты.
При условии что язык процедуры строго - SQL, eсть ли возможность:

1) Вернуть из процедуры индексированный рекордсет.
2) Заставить сервер анализировать тело процедуры.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE SCHEMA test AUTHORIZATION root;
SET search_path = test, pg_catalog;
CREATE TABLE table1 (
    id integer NOT NULL,
    val integer NOT NULL
) WITHOUT OIDS;
SET check_function_bodies = false;
CREATE FUNCTION function1 (integer) RETURNS SETOF table1
    AS '
select * from test.table1 t where t.id = $1
'
    LANGUAGE sql;
INSERT INTO table1 (id, val) VALUES ( 1 ,  10 );
INSERT INTO table1 (id, val) VALUES ( 2 ,  20 );
INSERT INTO table1 (id, val) VALUES ( 3 ,  30 );
ALTER TABLE ONLY table1
    ADD CONSTRAINT table1_pkey PRIMARY KEY (id);
    
EXPLAIN ANALYZE SELECT * FROM test.function1 ( 1 )

Function Scan on function1  (cost= 0 . 00 .. 12 . 50  rows= 1000  width= 8 ) (actual time= 0 . 000 .. 0 . 000  rows= 1  loops= 1 )
Total runtime:  0 . 000  ms
...
Рейтинг: 0 / 0
SQL Function, estimate rowcount - 1000.
    #33296998
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Paul ChabinskyНе спрашивайте зачем мне такая процедура, так она выглядит для простоты.
При условии что язык процедуры строго - SQL, eсть ли возможность:

1) Вернуть из процедуры индексированный рекордсет.
2) Заставить сервер анализировать тело процедуры.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE SCHEMA test AUTHORIZATION root;
SET search_path = test, pg_catalog;
CREATE TABLE table1 (
    id integer NOT NULL,
    val integer NOT NULL
) WITHOUT OIDS;
SET check_function_bodies = false;
CREATE FUNCTION function1 (integer) RETURNS SETOF table1
    AS '
select * from test.table1 t where t.id = $1
'
    LANGUAGE sql;
INSERT INTO table1 (id, val) VALUES ( 1 ,  10 );
INSERT INTO table1 (id, val) VALUES ( 2 ,  20 );
INSERT INTO table1 (id, val) VALUES ( 3 ,  30 );
ALTER TABLE ONLY table1
    ADD CONSTRAINT table1_pkey PRIMARY KEY (id);
    
EXPLAIN ANALYZE SELECT * FROM test.function1 ( 1 )

Function Scan on function1  (cost= 0 . 00 .. 12 . 50  rows= 1000  width= 8 ) (actual time= 0 . 000 .. 0 . 000  rows= 1  loops= 1 )
Total runtime:  0 . 000  ms


Что подразумевается под индексированый рекордсет и что под анализировать тело?
...
Рейтинг: 0 / 0
SQL Function, estimate rowcount - 1000.
    #33298421
Paul Chabinsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mwolf1) ... индексированый рекордсет
Например временная таблица с индексами.
mwolf2) ... анализировать тело?
Строить и сохронять execution plan функции при ее создании, для его последующего использования.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / SQL Function, estimate rowcount - 1000.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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