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

Привет. Довольно абстрактный вопрос, что в среднем эффективнее использовать для

решения n+1, кучу inner джоинов или cte или несколько запросов?

15 ответов

11 просмотров

Мне видится, что "кучу" join'ов. Всё-таки они именно для того и сделаны (в частности).

Егор-Малютин Автор вопроса
Petr
Мне видится, что "кучу" join'ов. Всё-таки они имен...

Для каких то простых запросов это понятно. Но меня скорее случай когда есть много уровней вложенных запросов формата many to many

Егор Малютин
Для каких то простых запросов это понятно. Но меня...

необходимо учесть, что планировщик эффективно строит план для относительно небольшого количества таблиц при джоинах и увеличение количества таблиц приведет к увеличению этапа разбора запроса и построения плана. Гляньте параметры join_collapse_limit и from_collapse_limit. У меня был случай, когда в запросе использовались представления, вложенные друг в друга, и запрос ужасно тормозил, деградируя до full scan. Увеличение join_collapse_limit и from_collapse_limit с базовых 8 до 20 решило проблему и план задействовал индексное сканирование. Учтите, что увеличение параметров приведет к нагрузке на ЦПУ

Kairat
необходимо учесть, что планировщик эффективно стро...

Ну так поднять их до значения, большего максимального количества JOIN в используемых запросах, да и всё. Defaults всё равно очень консервативные.

Kairat
необходимо учесть, что планировщик эффективно стро...

Да но это может привести к обратному эффекту, когда план строится неприемлемо долго.

Konstantin Zaitsev
Да но это может привести к обратному эффекту, когд...

Честно говоря, не сталкивался с такими случаями, чтобы план строился дольше 1 секунды, обычно десятки мсек или сотни на oltp системах. Возможно, в olap так?

Kairat
Честно говоря, не сталкивался с такими случаями, ч...

сделайте несколько таблиц с несколькими сотнями партиций в каждой, и поджойтине их...

Извините, а в каком таком кейсе в oltp нужны данные из сотен партиций одновременно? Если мы говорим о реальном кейсе

Kairat
Извините, а в каком таком кейсе в oltp нужны данны...

планировщик не всегда способен отбросить большинство партиций на этапе планирования :/

Ilya Portnov
планировщик не всегда способен отбросить большинст...

Больше смахивает на ошибку при проектировании :)

Kairat
Больше смахивает на ошибку при проектировании :)

да достатточно просто несколько вложенных select c join

Kairat
Больше смахивает на ошибку при проектировании :)

при джойнах нескольких партиционированных таблиц, особенно если иногда партиционированные с непартиционированными джойнить, планировщик часто не может "прокинуть" даже явные ограничения на ключ партиционирования через несколько таблиц. Т.е. T1 join T2 where T1.id between 100 and 500 — в чуть более сложных случаях не сообразит какие именно партиции из T2 нужны.

Ilya Portnov
при джойнах нескольких партиционированных таблиц, ...

что можно обойти указав явно диапазон для секционированной t2.

Roman
что можно обойти указав явно диапазон для секциони...

можно. Но это надо не забывать делать для каждого такого запроса и для каждой входящей в него партиционированной таблицы.

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

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

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