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

Если мне надо сделать фильтрацию по таблице, которая приjoinена к

другой, есть ли какая-то принципиальная разница, если я это сделаю в формате обычного join и затем фильтрации:
SELECT name
FROM table_1
JOIN table_2 ON table_1.id = table_2.id
WHERE table_2.count > 10

или сделаю join с подзапросом, при этом фильтрация будет в подзапросе:
SELECT name
FROM table_1
JOIN (
SELECT id FROM table_2
WHERE count > 10
) ON table_1.id = table_2.id

второй вариант должен быть быстрее первого или такие штуки учитывает планировщик постгреса по дефолту и разницы не будет?

3 ответов

29 просмотров

Планировщик сам сделает

Эти варианты всегда эквивалентны, насколько я помню. Т.е. сделать так, чтобы планировщик построил разные планы для них (если это всё — обычные таблицы и т.п.) просто не получится. И это потому, что это основа его архитектуры — все clauses при начальной обработке ("деконструкции") запроса разделяются на join clauses (где есть несколько таблиц отношений, вроде table_1.id = table_2.id ) и restriction clauses (где только одна, вроде table_2.count > 10), и последние связываются со "своими" отношениями, и дальнейшая обработка отталкивается от этого.

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

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

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