我有一个 SQL 语句,它返回许多行,这些行被插入到 VBA 中的一个数组中。然后我遍历数组并粘贴到电子表格行中。
我的内存不足,因此我想分批粘贴。
我不介意每次都运行相同的 SQL 查询来收集数据,只要我能避免内存问题。我怎样才能做到这一点?在My SQL中我曾经使用LIMIT,但是这里我想说选择第一个... 1000?然后是下一个 1000 等
我有一个 SQL 语句,它返回许多行,这些行被插入到 VBA 中的一个数组中。然后我遍历数组并粘贴到电子表格行中。
我的内存不足,因此我想分批粘贴。
我不介意每次都运行相同的 SQL 查询来收集数据,只要我能避免内存问题。我怎样才能做到这一点?在My SQL中我曾经使用LIMIT,但是这里我想说选择第一个... 1000?然后是下一个 1000 等
要“选择第一个... 1000?然后选择下一个 1000”,请执行以下操作:
SELECT * FROM table
LIMIT <limit>
OFFSET <batch * limit>
其中 limit 等于 1000 并且您的批次将从 0 开始,每次调用递增 1
我发现通过传入 2 个参数来创建一个使用基本分页函数调用的存储过程是最简单的方法:每页的行数和请求的页面。
看看这个问题:如何在 SQL Server 2008 中进行分页
如果您以编程方式调用存储过程,则可以使用 while 循环,直到没有返回任何结果。