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

Здравствуйте, помогите советом, пож-та, такая ситуация: есть вьюшка, достаточно с

большим количеством JOIN (9 шт) и LEFT JOIN (5 шт). в первой же таблице есть поле с индексом. пишу такой запрос :
select t.* from view_name t where t.column = '112233'

Планировщик использует это условие в самую последнюю очередь, и шерстит все соединения которые дают 130 тыс. записей, потом по условию t.column = '112233' - оставляет 6 тыс.записей

Изначальная задумка была, что бы отрабатывало это условие и потом только для этих записей были выполнены соединения.
как можно поправить запрос вьюшки ?

13 ответов

18 просмотров

https://t.me/pgsql/288632

Айрат-Шайдуллин Автор вопроса
Yaroslav Schekin
https://t.me/pgsql/288632

версия 11.8 https://explain.depesz.com/s/bqjp

Айрат Шайдуллин
версия 11.8 https://explain.depesz.com/s/bqjp

У меня дежавю, что ли... а, нет — https://t.me/pgsql/291308 ;) И \d+ или \sv самого view, кстати.

Айрат-Шайдуллин Автор вопроса
Айрат Шайдуллин
https://explain.depesz.com/s/um8x - вьюшка

А почему там "SELECT DISTINCT"? Я к тому, что почти всегда это намекает на ошибку в запросе, которую кто-то пытается "замести под ковёр". Т.е. если это действительно ошибка, зачем дальше разбираться (не вижу смысла оптимизировать неправильные запросы)?

Айрат-Шайдуллин Автор вопроса
Yaroslav Schekin
А почему там "SELECT DISTINCT"? Я к тому, что поч...

по таблице meth.route_transfer, которая самая последняя по запросу возвращаются несколько записей.

Айрат Шайдуллин
по таблице meth.route_transfer, которая самая посл...

И поэтому из них выбираются произвольные производные записи? Это и есть попытка "замести проблему под ковёр", нет? ;) Т.е. если возвращается несколько записей, то стоит подумать, значения из какой (или какие, если их надо группировать — максимумы/минимумы и т.п.) нужны в результате и почему.

Айрат-Шайдуллин Автор вопроса
Yaroslav Schekin
И поэтому из них выбираются произвольные производн...

сейчас с помощью lateral отбиру только 1 запись, уберу disitnct

Айрат Шайдуллин
сейчас с помощью lateral отбиру только 1 запись, у...

Хорошо. А потом, если проблема останется — всё же, покажите всё, о чём я спрашивал (можно без \d таблиц, для начала).

Айрат-Шайдуллин Автор вопроса
Yaroslav Schekin
Хорошо. А потом, если проблема останется — всё же,...

https://explain.depesz.com/s/o3Ym - explain analyze запроса https://explain.depesz.com/s/fh5w - вьюшка после того как убрал distinct время выполнения лучше стало. но все равно условие сразу не ставится и тем более не по индексу, и отрабатываются все записи

Айрат Шайдуллин
https://explain.depesz.com/s/o3Ym - explain analyz...

(Грустно вздыхая) И в третий, кажется, раз: "Покажите версию PostgreSQL, запрос, \d каждой используемой таблицы, EXPLAIN (ANALYZE, BUFFERS)."

Айрат-Шайдуллин Автор вопроса
Yaroslav Schekin
(Грустно вздыхая) И в третий, кажется, раз: "Покаж...

версия PostgreSQL 11.8 on x86_64-pc-linux-gnu https://explain.depesz.com/s/8ooc - explain analyze buffers запроса https://explain.depesz.com/s/fh5w - вьюшка до этого писали что можно без таблиц, поэтому и не делал...тем более их много же

Айрат Шайдуллин
версия PostgreSQL 11.8 on x86_64-pc-linux-gnu http...

Я подчеркнул/выделил то, что Вы несколько раз подряд не показали, вот и всё.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта