Size: a a a

2020 August 26

AR

Anton Revyako in ctodailychat
Max Musatov
Чёт это спорно, мне казалось, что pg оптимизирует такие случаи
источник

AR

Anton Revyako in ctodailychat
^
источник

AR

Anton Revyako in ctodailychat
понятно, что все сильно зависит
источник

MM

Max Musatov in ctodailychat
Так, а почему эти два запроса дают разные результаты? https://www.db-fiddle.com/f/oap99AgRbMDpeybLBHE8DH/0
источник

MM

Max Musatov in ctodailychat
(Простите за форматирование, я с телефона)
источник

AR

Anton Revyako in ctodailychat
в чем они разные?
источник

MM

Max Musatov in ctodailychat
Anton Revyako
в чем они разные?
Ну #3 возвращает тысячи строк, а #4 одну
источник

MM

Max Musatov in ctodailychat
Или оно с телефона не работает нормально просто?
источник

AR

Anton Revyako in ctodailychat
Кстати, о вереде заворачивания запросов во внутрь plpgsql адское зло, тк. вот такое

CREATE OR REPLACE FUNCTION tfn2(i int)
 RETURNS TABLE (a int, b int) AS
$$
BEGIN
  RETURN QUERY
  SELECT * FROM t1, t2 WHERE t1.a = i;
END
$$  LANGUAGE plpgsql;

будет выполняться еще дольше, чем select * from view
источник

AR

Anton Revyako in ctodailychat
Max Musatov
Ну #3 возвращает тысячи строк, а #4 одну
ты прав, я балбес ) setof надо. щаз сделаю
источник

AR

Anton Revyako in ctodailychat
источник

AR

Anton Revyako in ctodailychat
на 100k не очень заметно, я сделал 1m
источник

IV

Igor V in ctodailychat
вроде нет существенной разницы
источник

AR

Anton Revyako in ctodailychat
но это очень простой кейс. справедливости ради, к меня локально все работает немного иначе )
источник

AR

Anton Revyako in ctodailychat
742.076 ms vs 660.898 ms
источник

YS

Yuli S in ctodailychat
Всем привет
источник

AR

Anton Revyako in ctodailychat
но вообще посгрес старается оптимизировать что может. например, он умеет понимать частичные индексы не 1 в 1. тут тоже по понятным причинам будут всякие оптимизации
источник

YS

Yuli S in ctodailychat
Есть тут кто с WordPress? Можно в личку если говорить в слух не хотите :-)
источник

IV

Igor V in ctodailychat
Anton Revyako
но это очень простой кейс. справедливости ради, к меня локально все работает немного иначе )
я заметил, что первый запрос всегда выполняетсся дольше. попробуй поменять порядок:

explain analyze
select * from tfn(1);

explain analyze
select * from tv where a=1;
источник

AR

Anton Revyako in ctodailychat
Igor V
я заметил, что первый запрос всегда выполняетсся дольше. попробуй поменять порядок:

explain analyze
select * from tfn(1);

explain analyze
select * from tv where a=1;
db-fiddle, видимо, не хранит сессию, поэтому да, кеш не прогрет ) прогрел - разницы нет в пределах погрешности.

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