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

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

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

4 ответов

13 просмотров

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

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

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

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

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

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

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
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
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
Карта сайта