我们从外部源获取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
我现在看到您的评论。哇,这很慢。也许你正在做错整个过程。听起来你正在逐一进行操作,只有两个会做? (一个用于更新,一个用于插入) –