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

Расскажите пожалуйста, как на самом деле работают джойны в SQL

Server'е? :D
Есть две таблицы, джойню их по ключу. В левой табличке заведомо по условию нет строк, соответственно и джойнить нечего, однако estimated number of rows не нулевой и по какой-то причине, он также не нулевой в правой табличке (хотя по идее, надо ведь сначала найти айдишники в левой, а потом по ним искать в правой)
в итоге, если во временную таблицу вытащить айдишники из левой таблицы, а потом заджойнить на правую - то все гуд. А если сразу - то сразу cost у вычисления правой таблицы безумно огромный и жизнь боль. Что я делаю не так? Может как-то не так читаю план?

4 ответов

16 просмотров

Что значит заведомо по условию нет строк? Проверь статистику по той колонке или индексу по которому у тебя условие но основе этой статистике и формируется эстимейтед и там можно увидеть будет попадает ли твое значение в какой либо диапазон

Мартин, Грабер "Введение в SQL" Читать до просветления. В чате это бессмысленно рассказывать.

В левой табличке заведомо по условию нет строк, соответственно и джойнить нечего, Но при составлении плана-то это неизвестно... однако estimated number of rows не нулевой и по какой-то причине, Потому что это ОЦЕНКА кол-ва строк, она неточная. Кроме того, ни один оптимизатор даже если знает точно что там строк соответствующих нет, не будет ставить оценку 0, минимум там будет 1. Потому что это число нужно не для подсчёта кол-ва строк а как коэффициент в оценсе стоимости выполения блока плана

(хотя по идее, надо ведь сначала найти айдишники в левой, а потом по ним искать в правой) Это кто тебе сказал? левой таблицы, а потом заджойнить на правую - то все гуд. -- ГЫ ... Давай использовать правильные формулировки. "ТЕБЕ КАЖЕТСЯ, ЧТО ВСЁ ГУД". да, ты как-то не так читаешь план Да и вооще у тебя там ни одного JOIN нет, какого чёрта спрашивать было?

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
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
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта