По одному условию дата <= дата нельзя однозначно назвать алгоритм. Обычный hash join без равенства не подходит; возможны nested loop и специальные стратегии диапазонов.
Какой физический механизм JOIN будет использован при джойне таблицы транзакций с таблицей календаря по условию неравенства (дата <= дата)?
По одному условию дата <= дата нельзя однозначно назвать алгоритм. Обычный hash join без равенства не подходит; возможны nested loop и специальные стратегии диапазонов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
По одному условию дата <= дата нельзя однозначно назвать алгоритм. Обычный hash join без равенства не подходит; возможны nested loop и специальные стратегии диапазонов.
Для маленького календаря Spark может выбрать broadcast nested loop. Другие СУБД способны использовать индексный диапазонный поиск или специализированную обработку неравенств. Наличие дополнительного равенства по ключу меняет варианты.
Посмотрите EXPLAIN и оцените число результирующих пар: соединение каждой транзакции со всеми последующими датами может резко увеличить результат. Иногда задачу накопительных значений лучше выразить агрегацией и оконной функцией, если это сохраняет смысл.