我們從外部源獲取Access數據庫(.accdb),並且無法控制結構或數據。我們需要使用代碼將數據提取到我們的數據庫中。這意味着我可以控制SQL。使用SQL訪問限制記錄
我們的問題是,一張表包含近13k條記錄(當前12,997條),需要很長時間才能處理。我想查詢源數據庫中的數據,但一次只能查詢預定義數量的記錄 - 比如說1000個數據。
我試圖在循環內生成我的查詢,我更新了每個循環返回的記錄數。到目前爲止,我發現,接近工作的唯一事情是這樣的:
SELECT *
FROM (
SELECT Top + pageSize + sub.*
FROM (
SELECT TOP + startPos + [Product Description Codes].*
FROM [Product Description Codes]
ORDER BY [Product Description Codes].PRODDESCRIPCODE
) sub
ORDER BY sub.PRODDESCRIPCODE DESC
) subOrdered
ORDER BY subOrdered.PRODDESCRIPCODE
我在哪裏增加的pageSize和startPos每次循環。問題是它總是返回1000行,即使我認爲應該是最後一個循環時它應該只返回997,然後返回零。
任何人都可以幫助我嗎?我沒有其他列可以過濾。有沒有辦法在循環中選擇一定數量的記錄,然後增加該數字,直到獲得所有記錄,然後停止?
你能澄清一下你的意思嗎? 13k記錄是什麼也不應該慢 –
現在我得到所有13K記錄。對於每一個,我的代碼都會檢查我們數據庫中的現有記錄。如果有現有記錄,則更新;如果沒有現有記錄,則插入當前的記錄。我讓它在昨天運行,耗時3437,640毫秒,大約57分鐘。這超出了我們的績效指標。 – Steve
我現在看到您的評論。哇,這很慢。也許你正在做錯整個過程。聽起來你正在逐一進行操作,只有兩個會做? (一個用於更新,一個用於插入) –