Диагностика кардинальности JOIN и уникальности ключей
Лучше начать с проверки кардинальности JOIN, ключей и плана выполнения — первого варианта. Проверка уникальности обеих таблиц полезна как часть этой диагностики.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
Лучше начать с проверки кардинальности JOIN, ключей и плана выполнения — первого варианта. Проверка уникальности обеих таблиц полезна как часть этой диагностики.
Читать ответРазделите ассистента на получение схемы, генерацию SQL, проверку и ограниченное исполнение. Для ClickHouse используйте отдельную учётную запись только с нужными правами чтения.
Читать ответQdrant выбирают как векторное хранилище для similarity search и фильтрации по payload, если это подтверждено требованиями и измерениями. Он не обязан заменять основную транзакционную БД приложения.
Читать ответLEFT JOIN сохранит все подразделения, включая пустые, а COUNT(e.id) посчитает только реальных сотрудников. Группировать нужно по ID и названию отдела.
Читать ответРазделите заголовок заказа и его позиции: orders хранит покупателя и дату, order_items — товары, количество и цену покупки. Сейчас строка Order смешивает оба уровня.
Читать ответОтберите salary < 30000 и ненулевой manager_id, которому не соответствует существующий employee_id. Отсутствие начальника изначально не равно увольнению начальника.
Читать ответСостав строк определяется условием ON: INNER возвращает совпадения, LEFT/RIGHT сохраняют несовпавшую сторону с NULL, FULL сохраняет обе. CROSS строит декартово произведение.
Читать ответПри соединении по A.id = B.id INNER вернёт пары (2,2) и (4,4). LEFT добавит (1,NULL), (3,NULL); RIGHT — (NULL,6), (NULL,8); FULL объединит все шесть пар.
Читать ответЛогически FROM/JOIN формирует строки до WHERE, но физически оптимизатор вправе протолкнуть фильтр к чтению table1. В приведённом INNER JOIN декартово произведение не требуется.
Читать ответИспользуйте EXISTS для проверки хотя бы одного недоставленного заказа у курьера. Это не размножит строки курьеров при нескольких таких заказах.
Читать ответВставьте две копии существующей строки через INSERT … SELECT с UNION ALL. Явно перечислите копируемые поля и не переносите уникальный автоидентификатор.
Читать ответINNER оставляет совпавшие пары, LEFT и RIGHT дополнительно сохраняют несовпавшие строки соответствующей стороны, FULL — обеих сторон. CROSS строит все сочетания строк.
Читать ответ