🟡🔵 Разбираемся с SQL JOIN и фильтрами в OUTER JOIN
Одна из самых частых ошибок при работе с SQL - путаница между условием в
Когда мы пишем
✨ Пример:
У нас есть две таблицы:
- Левая: фигура + число
- Правая: число + фигура
Мы делаем
1. Фильтр в ON
Если написать
2. Фильтр в WHERE
Если написать
⚡ Почему это нужно знать?
-
-
- В
📌 Вывод:
- Если нужно оставить все строки из левой таблицы и лишь добавить совпадения справа - фильтр ставим в
- Если хотим действительно отобрать только подходящие строки — фильтр в
Именно поэтому в сложных запросах всегда спрашивай себя: фильтр — это часть логики соединения или это окончательное ограничение?
#SQL #joins #databases
Одна из самых частых ошибок при работе с SQL - путаница между условием в
ON и фильтром в WHERE. На картинке это отлично показано.Когда мы пишем
LEFT OUTER JOIN, мы ожидаем, что слева попадут все строки. Но результат зависит от того, где именно мы накладываем фильтры.✨ Пример:
У нас есть две таблицы:
- Левая: фигура + число
- Правая: число + фигура
Мы делаем
LEFT OUTER JOIN. 1. Фильтр в ON
Если написать
ON right_table.number = 1, то соединение будет проверять условие именно во время джойна. Это значит: строки слева сохранятся, даже если справа нет совпадений — просто будут NULL.2. Фильтр в WHERE
Если написать
WHERE left_table.number = 1, то фильтрация произойдёт уже после объединения. В этом случае строки, не прошедшие условие, полностью исчезнут из результата.⚡ Почему это нужно знать?
-
ON управляет логикой соединения. -
WHERE убирает строки после соединения. - В
OUTER JOIN это принципиальная разница: при фильтре в ON мы сохраним «пустые» строки, при фильтре в WHERE они будут удалены. 📌 Вывод:
- Если нужно оставить все строки из левой таблицы и лишь добавить совпадения справа - фильтр ставим в
ON. - Если хотим действительно отобрать только подходящие строки — фильтр в
WHERE. Именно поэтому в сложных запросах всегда спрашивай себя: фильтр — это часть логики соединения или это окончательное ограничение?
#SQL #joins #databases
❤9👍9🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
🚨 SQL Никогда НЕ ДЕЛАЙ ТАК #sql
НИКОГДА НЕ ЛОМАЙ ИНДЕКСЫ ФУНКЦИЯМИ: не оборачивай индексируемые поля в функции внутри WHERE.
Как только ты пишешь LOWER(), CAST(), COALESCE() или любые вычисления по колонке — индекс перестаёт работать, и запрос падает в полное сканирование таблицы.
Это одна из самых тихих причин, почему запросы внезапно превращаются в тормоза.
Вместо этого приводи значения заранее или используй функциональные индексы.
НИКОГДА НЕ ЛОМАЙ ИНДЕКСЫ ФУНКЦИЯМИ: не оборачивай индексируемые поля в функции внутри WHERE.
Как только ты пишешь LOWER(), CAST(), COALESCE() или любые вычисления по колонке — индекс перестаёт работать, и запрос падает в полное сканирование таблицы.
Это одна из самых тихих причин, почему запросы внезапно превращаются в тормоза.
Вместо этого приводи значения заранее или используй функциональные индексы.
Плохо: индекс по email НЕ используется
SELECT *
FROM users
WHERE LOWER(email) = 'user@example.com';
-- Хорошо: нормализуем значение заранее
SELECT *
FROM users
WHERE email = 'user@example.com';
-- Или создаём функциональный индекс (PostgreSQL)
CREATE INDEX idx_users_email_lower ON users (LOWER(email));
👍22❤8🔥6
XiYan-SQL - это open-source решение, позволяющее генерировать, анализировать и выполнять SQL-запросы с использованием больших языковых моделей. Инструмент ориентирован на ускорение исследования данных и автоматизацию рутинных операций, связанных с запросами к базе.
Ключевые возможности:
- Генерация SQL из естественного языка -пользователь формулирует задачу обычными словами, а система преобразует её в корректный SQL-запрос.
- Интерактивная работа с базой данных - запросы можно оперативно уточнять, редактировать и выполнять, получая быстрый цикл обратной связи.
- Поддержка нескольких СУБД - PostgreSQL, MySQL, SQLite и другие.
- 🛠️ Минимальная конфигурация - подходит для анализа данных, прототипирования и облегчения доступа к базе без сложной инфраструктуры.
Преимущества использования:
- Существенно снижает трудоёмкость написания сложных SQL-запросов.
- Упрощает работу аналитикам и разработчикам, которым важно быстро получать корректные результаты.
- Может выступать в роли интерактивного помощника для изучения структуры базы и построения отчётов.
🔗 Репозиторий: github.com/XGenerationLab/XiYan-SQL
@ai_machinelearning_big_data
#sql #llm #ai #opensource #database #datatools #postgresql
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤6👎6🥰1