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

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

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

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

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

13 ответов

14 просмотров

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...

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

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта