172 похожих чатов

Скажите, а STABLE функция get_user_hash в этом выражении должна оптимально

вызываться или по числу строк?
select order_id, get_user_hash(user_id) from orders;

12 ответов

10 просмотров
Sergey-Gr Автор вопроса

А есть какое-то разумное объяснение этому?

Sergey Gr
А есть какое-то разумное объяснение этому?

Вряд-ли, когда то на sql.ru разбирали, почему с функциями дат такое происходит. Но не помню чем дело закончилось, а обсуждение не сохранил.

Sergey Gr
А есть какое-то разумное объяснение этому?

Хотя если подумать, stable гарантирует, что при одних и тех же входных значений получишь тот же результат. Но, вроде, ни где не говорить что в кэше храниться некая мапа вход:выход

оптимально - это как?

Sergey-Gr Автор вопроса
Sergey Bezrukov
оптимально - это как?

Если там на 1000 заказов 10 уникальных пользователей,то только 10 раз

поставить в функцию raise notice и посмотреть?

Sergey Gr
А есть какое-то разумное объяснение этому?

Ну, было бы хотя бы один раз на запрос -- постгрес бы оптимизировал. А так -- ну, нет тут такой оптимизацыи с запоминанием предыдущих результатов stable функцый.

Sergey Gr
А есть какое-то разумное объяснение этому?

выше уже писали, у postgres нет кеша результатов функций, он может оптимизировать количество вызовов только у функций вызывающихся с константными аргументами (с помощью её выполнения при планировании и встраивания результата в план запроса), если в аргументе переменная (имя колонки например) то он будет вызывать её каждый раз, даже с атрибутом immutable

Sergey-Gr Автор вопроса

Т.е. здесь может помочь CTE Materialized с предвычислением хеша и последующим join'ом?

Sergey Gr
Т.е. здесь может помочь CTE Materialized с предвыч...

Здесь может помочь перестроить запрос. Сначала выбрать с аггрегатом по user_id, потом взять хэш от user_id, потом делать то, что хотите

Sergey Gr
Т.е. здесь может помочь CTE Materialized с предвыч...

Можэт, в принцыпе. На самом деле -- join, возможно, поможэт и без CTE.

Похожие вопросы

Обсуждают сегодня

Коллеги, здравствуйте! А можно узнать ваше мнение относительно Wolfram Mathematica vs Julia? Просто у меня стоит выбор между тем, чтобы продолжить преподавать Wolfram Mathemat...
Илья Гаража
10
Обновленный chat тестили уже господа? Готовимся на заводы ? Простой проект на ларавель собирает за 1 ответ..
Jacov Borisov
11
кому не сложно распишите пожалуйста для какой цели тут вот эти скобки и в них пихается указатель?
Михаил Helper
15
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Или мне дублировать структуру с информацией о следующем потоке в адресное пространство текущего потока?
One
9
Серьезно? Вот прям так на глагне на первом экране?
Sasha Beep
8
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
в "главной форме" создаются "дочерние формы / копии главной" new_form := TForm1.Create(Application); new_form.blah_blah_blah обработчик, срабатывающий при изменении положени...
livontiy
6
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
Карта сайта