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

Условие совершенно одинаковое же. (или я что-то не понимаю??)

13 ответов

9 просмотров

Да. И зачем Вы его написали? ;) Я тут уже неоднократно писал, кажется — PostgreSQL не занимается устранением "идиотизмов" в запросах "специально" (если что-то такое устраняется, то только как побочный эффект каких-то более "мощных" оптимизаций). И да, это твёрдая (и совершенно правильная, IMNSHO) позиция проекта, если что.

Eugen- Автор вопроса
Yaroslav Schekin
Да. И зачем Вы его написали? ;) Я тут уже неоднок...

согласен, что идиотизм, но поведение странное. Поэтому, возможны, и коде есть странности.

Eugen
согласен, что идиотизм, но поведение странное. Поэ...

Ничего странного, "код" не занимается и не будет заниматься поиском повторений условий.

Eugen- Автор вопроса
Yaroslav Schekin
Ничего странного, "код" не занимается и не будет з...

А можете подсказать, он начинает рассматривать where из нутри или с наружи сразу?

Eugen
А можете подсказать, он начинает рассматривать whe...

Хмм... в смысле? Каждая WHERE разбирается на clauses (вроде "o.sys_period @> sys_time()" или "agreement_id = 1736"). Далее каждая обрабатывается / привязывается к одному relation (restriction clause) или нескольким (join clause). И они отдельно "проталкиваются" и т.п.

Eugen- Автор вопроса
Yaroslav Schekin
Хмм... в смысле? Каждая WHERE разбирается на claus...

вот для второго запроса, сразу разбирается вложенный WHERE или наружный?

Eugen
вот для второго запроса, сразу разбирается вложенн...

Вообще-то, это не имеет никакого значения. ;) Но если любопытно, то в процессе планирования сначала обрабатывается внутренний.

Yaroslav Schekin
Вообще-то, это не имеет никакого значения. ;) Но е...

а если результат внутреннего запроса материализуется отдельно, при условии что там набор данных небольшой, разве не быстрее обработается дублирующее условие?

Eugen- Автор вопроса
Yaroslav Schekin
Вообще-то, это не имеет никакого значения. ;) Но е...

А я предпологал, что внешний. Тогда ещё предположу, что использование индекса по пути меняется с BitmapHeapScan на IndexScan (когда до наружного WHERE доходит) да, было любопытно. Спасибо. Даже большое Спасибо за ваше время.

Eugen
А я предпологал, что внешний. Тогда ещё предположу...

Я отвечал про планирование, учтите. Поэтому не имеет значения в этом случае, внутренний или внешний — план получится тот же. И разница там именно в том, что условие получается совсем другое...

Yaroslav Schekin
Я отвечал совсем не об этом.

я понимаю, "я только спросить". :)

Eugen
А я предпологал, что внешний. Тогда ещё предположу...

А вообще, просто ради любопытства / на будущее — лучше бы self-reproducible test cases показывать в нетривиальных случаях. Или хоть \d каждой участвующей таблицы, \sf каждой участвующей функции и т.п. ;)

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

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

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
Есть предложения, как подобное можно упростить?
Hemul GM
12
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
У меня вопросик назрел. Почему, создав класс без наследования и реализации деструктора Destroy, деструктор не вызывался при free. Потом указал наследование от tobject и overri...
Сергей Бычков
9
@y0zhig @shizzard А можно я опишу цель и может вообще ерланг мне не подходит. На текущий момент как я понимаю у ерланга есть легковесные потоки и задача выполняется в каком т...
Дмитрий Спиридонов
5
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
just use free version ?? pycharm has a free version
Fan / Ac
9
Карта сайта