Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Какие есть типы соединений (JOIN) в PostgreSQL?
PostgreSQL поддерживает четыре основных типа соединений: INNER JOIN, LEFT JOIN, RIGHT JOIN и FULL OUTER JOIN. Они используются для объединения данных из нескольких таблиц, выбирая соответствующие или все записи в зависимости от типа соединения.
Какие методы использовали для оптимизации SQL-запросов (индексы, уменьшение JOIN, проверка на NULL)?
Для ускорения запросов создавали индексы по часто используемым полям, в том числе составные. Сокращали число JOIN, преобразуя сложные запросы в несколько простых или денормализуя данные. Исключали проверку на NULL в WHERE, чтобы избежать полного сканирования («IS NULL» плохо индексируется), и использовали предикаты вида column = value.
Как работать со сложными JOIN из множества таблиц?
Для сложных JOIN:
Чётко определите связи между таблицами (через ON).
Используйте псевдонимы (AS) для удобства.
Разбивайте запрос на подзапросы или CTE.
Добавляйте индексы на ключи соединения.
Пример: SELECT * FROM orders JOIN customers ON orders.customer_id = customers.id.
Как выполняются JOIN на физическом уровне (алгоритмы: nested loops, hash join)?
Основные алгоритмы:
Nested Loops: Для маленьких таблиц. Сравнивает каждую строку первой таблицы со всеми строками второй.
Hash Join: Для больших таблиц. Строит хеш-таблицу по одной таблице, ищет совпадения во второй.
Merge Join: Для предварительно отсортированных данных. Проходит по обеим таблицам за один проход.
Расскажи про различия JOIN на уровне множеств
JOIN-операции можно представить как:
INNER JOIN = пересечение множеств
LEFT JOIN = левое множество + пересечение
FULL JOIN = объединение множеств
CROSS JOIN = декартово произведение
Для чего нужен Left Join?
Можно ли делать JOIN без внешнего ключа между таблицами?
В чём разница между UNION и JOIN?
Как использовать JOIN, GROUP BY, HAVING в SQL?
Денормализация для уменьшения JOIN-запросов — как быть, если данные часто меняются (например, остатки товаров)?
Рейтинг:
1
Сложность:
4
LEFT JOIN возвращает:
Все строки из левой таблицы
Совпадающие строки из правой (или NULL при отсутствии совпадений)
Используется для поиска "отсутствующих" данных.
Рейтинг:
1
Сложность:
6
Да, JOIN работает без внешних ключей — он соединяет таблицы по любым условиям (например, ON table1.field = table2.field). Внешний ключ лишь гарантирует целостность данных.
Рейтинг:
1
Сложность:
6
JOIN соединяет таблицы по горизонтали (дополняет строки новыми столбцами).
UNION объединяет результаты по вертикали (добавляет строки из одного запроса под другой).
Рейтинг:
5
Сложность:
6
JOIN используется для объединения таблиц, GROUP BY — для группировки данных, HAVING — для фильтрации сгруппированных данных. HAVING применяется после группировки, а WHERE — до неё.
Рейтинг:
3
Сложность:
8
Для часто изменяемых данных применяются стратегии асинхронного обновления денормализованных полей через триггеры, очереди задач или materialized views. Вместо реального времени можно использовать near-real-time обновление с задержкой. Для остатков товаров эффективно кэширование актуальных значений с инвалидацией при изменениях. Также можно разделять "горячие" часто изменяемые данные и "холодные" статические данные.
Рейтинг:
3
Сложность:
3
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
4
Рейтинг:
2
Сложность:
5
Рейтинг:
1
Сложность:
8