powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вопрос по работе представлений в Posgre
13 сообщений из 13, страница 1 из 1
Вопрос по работе представлений в Posgre
    #38495292
Mih_dim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите следующее:
если есть представление с кучей join и полей (в том числе есть поле, которые являются результатом работы функции).
При выборке из этого представления только часть данных, которые относятся только к одной из таблиц, исп. в представлении или при выборке больше половины данных (в том числе поля - функции), то разницы в скорости выполнения нет. Скажите почему?
В MS SQL скорость от кол-ва полей зависит и притом существенно.

Скажите это особенность Posgresql (версия 9.1)?
P.S. Раньше работал с Ms sql.
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495333
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mih_dim,

Может вы хотите материализованные представления, или Вы считаете что если из 12 полей представления выбрать 6, то скорость обработки должна быть в 2 раза меньше?
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495339
а план запроса чего показывает? представление "материализуется" в монолитный набор промежуточных данных или раскладывается до уровня базовых таблиц?
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495346
SmeL_md,

как вариант, сервер при "раскрытии" представления мог "догадаться", что в итоговой выборке не нужны вычисляемые поля и , соответственно, не вычислять их. Это по любому должно было отразиться на скорости запроса. Думаю, ТС именно такое поведение и ожидает от слона
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495561
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mih_dimПодскажите следующее:
если есть представление с кучей join и полей (в том числе есть поле, которые являются результатом работы функции).
При выборке из этого представления только часть данных, которые относятся только к одной из таблиц, исп. в представлении или при выборке больше половины данных (в том числе поля - функции), то разницы в скорости выполнения нет. Скажите почему?
В MS SQL скорость от кол-ва полей зависит и притом существенно.

Скажите это особенность Posgresql (версия 9.1)?
P.S. Раньше работал с Ms sql.

поля-функции будут вычислены вне зависимости от того запросили вы их или нет...
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495675
Mih_dim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_mdMih_dim,

Может вы хотите материализованные представления, или Вы считаете что если из 12 полей представления выбрать 6, то скорость обработки должна быть в 2 раза меньше?

Я не хочу материзованные представления, я хочу понять как работает посгре с представлениями.
В MS SQL есть разница в скорости, если часть полей которые я уберу, полностью исключат выборку из части таблиц представления.
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495676
Mih_dim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эха план запроса чего показывает? представление "материализуется" в монолитный набор промежуточных данных или раскладывается до уровня базовых таблиц?

А что может и так и этак? На сколько я разбираюсь в планах , то базовые таблицы
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495687
Mih_dim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukMih_dimПодскажите следующее:
если есть представление с кучей join и полей (в том числе есть поле, которые являются результатом работы функции).
При выборке из этого представления только часть данных, которые относятся только к одной из таблиц, исп. в представлении или при выборке больше половины данных (в том числе поля - функции), то разницы в скорости выполнения нет. Скажите почему?
В MS SQL скорость от кол-ва полей зависит и притом существенно.

Скажите это особенность Posgresql (версия 9.1)?
P.S. Раньше работал с Ms sql.

поля-функции будут вычислены вне зависимости от того запросили вы их или нет...

Печально. а откуда такие сведения? можно ссылку. Очень интересен этот вопрос, т.к. много представлений с множеством полей и функций - возможно придется для части операций писать свои урезанные представления
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495700
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mih_dimSmeL_mdMih_dim,

Может вы хотите материализованные представления, или Вы считаете что если из 12 полей представления выбрать 6, то скорость обработки должна быть в 2 раза меньше?

Я не хочу материзованные представления, я хочу понять как работает посгре с представлениями.
В MS SQL есть разница в скорости, если часть полей которые я уберу, полностью исключат выборку из части таблиц представления.
что-то и про МС вы загнули и про постгре не догоняете.
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495725
Mih_dim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakMih_dimпропущено...


Я не хочу материзованные представления, я хочу понять как работает посгре с представлениями.
В MS SQL есть разница в скорости, если часть полей которые я уберу, полностью исключат выборку из части таблиц представления.
что-то и про МС вы загнули и про постгре не догоняете.

А ты проверь в мс и увидишь. А про посгре- если бы догонял то не писал бы здесь вообще.
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495746
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mih_dimMaxim Bogukпропущено...


поля-функции будут вычислены вне зависимости от того запросили вы их или нет...

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

1)от знания кода postgresql

проверяется за 1 минуту:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
postgres=# select i from (select i, pg_sleep(5) as sleep from generate_series(1,5) as g(i)) as _view;
e i
---
 1
 2
 3
 4
 5
(5 rows)

Time: 25006.180 ms
postgres=# explain (verbose, analyze) select i from (select i, pg_sleep(5) as sleep from generate_series(1,5) as g(i)) as _view;
                                                                 QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------
 Subquery Scan on _view  (cost=0.00..202.50 rows=1000 width=4) (actual time=5001.077..25005.338 rows=5 loops=1)
   Output: _view.i
   ->  Function Scan on pg_catalog.generate_series g  (cost=0.00..102.50 rows=1000 width=4) (actual time=5001.073..25005.317 rows=5 loops=1)
         Output: g.i, pg_sleep(5::double precision)
         Function Call: generate_series(1, 5)
 Total runtime: 25005.380 ms
(6 rows)

Time: 25026.864 ms
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495878
marvinorez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk, Mih_dim


Не совсем так...
Функция НЕ БУДЕТ выполняться если она STABLE или IMMUTABLE, т.е. не меняет данные в БД


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE OR REPLACE FUNCTION trash.immutable_test(p_int int)
  RETURNS int AS
$BODY$
begin
        raise notice '%', p_int;
        return p_int;
END;

$BODY$
  LANGUAGE plpgsql immutable
  COST 100;



Код: plsql
1.
select q.i from(select i, trash.immutable_test(i) from generate_series(1,5) i) q
...
Рейтинг: 0 / 0
Вопрос по работе представлений в Posgre
    #38495891
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marvinorezMaxim Boguk, Mih_dim


Не совсем так...
Функция НЕ БУДЕТ выполняться если она STABLE или IMMUTABLE, т.е. не меняет данные в БД


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE OR REPLACE FUNCTION trash.immutable_test(p_int int)
  RETURNS int AS
$BODY$
begin
        raise notice '%', p_int;
        return p_int;
END;

$BODY$
  LANGUAGE plpgsql immutable
  COST 100;



Код: plsql
1.
select q.i from(select i, trash.immutable_test(i) from generate_series(1,5) i) q



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


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