據我所知,你的擔心是記憶。
如果單個表(A和B)沒有按時間戳排序,那麼您需要將其所有記錄合併到一個文件中,然後使用一些基於文件的排序算法(如MergeSort,記錄,在第二階段你會得到排序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)。
表A和B按時間戳排序嗎? – 2012-08-14 15:36:41
每個表格源都有時間戳列,我可以在查詢時對它們排序 – Wins 2012-08-15 00:06:38