Ответ 1
Как я понимаю, ваша забота - это память.
Если отдельные таблицы (A и B) не сортируются по метке времени, вам необходимо объединить все свои записи в один файл, а затем использовать некоторый алгоритм сортировки на основе файлов (что-то вроде MergeSort, за один проход вы получите отсортированные пары записей, во 2-м проходе вы сортируете 4 и т.д.). Когда у вас есть файл со всеми записями в порядке возрастания временных меток, вы можете разбить его на страницы.
Если таблицы уже отсортированы, то вам нужно объединить N отсортированных последовательностей в один. Я предлагаю вам организовать какой-то Heap, чтобы отслеживать, какой из N источников имеет элемент с мельчайший временная метка. В псевдокоде это будет выглядеть так:
for i=1,N
{
Add the 1st record from each table to the Heap
}
while(Heap not empty)
{
x = take the smallest item from the heap, noting which table j this record belonged to
Add x to output
if (the j-th table is not completely processed)
{
take the next value from the j-th table and insert it into the heap
}
}
Сложность - O (M * logN), где M - общее количество записей в таблицах, а N - количество таблиц. Вся эта куча вещей стоит только хлопот, если N достаточно велико (моя догадка ~ 100). В противном случае я бы пошел с линейным поиском и O (N * M).