Базы Данных (Data Base) | SQL & NoSQL. PostgreSQL, MySQL и Big Data. Уроки для Backend и Data Engineer. Архитектура БД, Оптимизация и Design.
@database_info
Фото Антипаттерны JOIN-ов в SQL и как их избежать JOIN - мощная штука, но может легко превратиться в генератор тормозов и дублей. Вот топ-4 ловушек: 1️⃣ Забыли условие соединения SELECT * FROM orders JOIN customers; Без ON это картезианское произведение - каждая строка первой таблицы умножается на все строки второй. Легко получить миллионы ненужных записей. ✅ Как избежать: Всегда указывай условие соединения. 2️⃣ JOIN по неиндексированным колонкам Если соединяешь большие таблицы по полю без индекса - готовься ждать. ✅ Как избежать: Добавь индекс на ключи соединения. CREATE INDEX idx_orders_customer_id ON orders(customer_id); 3️⃣ Фильтры в WHERE вместо ON -- Плохо FROM orders LEFT JOIN customers ON orders.customer_id = customers.id WHERE customers.region = 'EU'; LEFT JOIN превратился в INNER JOIN, потому что фильтр в WHERE отсекает NULL-строки. ✅ Как избежать: Фильтруй в ON, если хочешь сохранить LEFT JOIN: LEFT JOIN customers ON orders.customer_id = customers.id AND customers.region = 'EU'; 4️⃣ SELECT *** в сложных JOIN-ах Такая выборка тянет все колонки всех таблиц. Много лишних данных + риск коллизии имён колонок. ✅ Как избежать: Явно указывай нужные поля. 💡 Вывод: JOIN - как скальпель. В умелых руках ускоряет, в неумелых - режет производительность. Сохрани, чтобы не резануть базу не туда ✂️ #db 👉 @database_info
Если у вас установлено приложение,
вы можете сразу перейти в канал