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

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

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

12 ответов

30 просмотров
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.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта