Недавно решал похожую задачу в Access. У меня было две таблицы: таблица сделок, в которой был столбец с временем сделки, и таблица цен с колонками товар, время начала действия цены и цена.
Надо было определить по какой цене были произведены сделки. В обеих таблицах было очень много строк.
Перепробовал кучу вариантов: с подзапросами, промежуточными таблицами и пр. Но все они работали очень долго, так как для каждой строки из таблицы сделок надо было выполнять подзапрос с LIMIT 1.
В итоге самым быстрым оказалось такое решение: получить две таблицы, отсортировав их по времени, далее в цикле одновременно обходить обе таблицы и выполнять пересечение вручную.