sql-server - 使用 fireac 获取大表中的行
问题描述
我在 sql server 上有一个大表,大约 80 万条记录。
我如何浏览所有记录,一次 x 数量?
例如,我想打开 FDQuery,但一次浏览 1000 条记录。
如果我使用:
FDQuery.First;
while not FDQuery.eof do
begin
//do something
FDQuery.Next;
end;
我相信所有的记录都带来了;
我已阅读有关获取记录的信息,例如 FetchOptions:Mode、RowsetSize、RecsMax、RecsSkip 等属性……但我无法浏览所有记录,一次只能浏览固定数量的记录。
解决方案
您可以使用一些创造力,提供分页并使用在 UI 中配备了漂亮进度条的线程来获取假设每页 100 行。在这种方法中,您必须通过一些智能查询、有时重新加载数据等来管理搜索和过滤器......
如果您使用的是 SQL 服务器,则其中一个选项可能是使用一些排名函数(如 ROW_NUMBER)来获取每个页面。
像这样的东西:
;WITH CTE_Test AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY F1) AS Row_No FROM Tbl_Test
)
SELECT * FROM CTE_Test
WHERE Row_No BETWEEN 1 AND 100
推荐阅读
- ios - 在 UICollectionView 中跟踪上传进度正在复制单元格
- python-3.x - 使用追加将复选框添加到 Ultimatelistctrl
- database - 在 Firebase 数据库子中查询
- sql - 在 r 中创建用户定义的 WHERE SQL 短语
- flutter - 当时间是 23:59:59 时如何更新 Widget?
- python - 如何在 Django admin 中给出显示值的条件
- java - 在 Kotlin 中引用重载的 Java 方法
- php - mysqli 计数查询未返回正确的值
- python - 如何在python中将文件位置写为字符串
- anylogic - Anylogic中代理的默认属性是什么?复制代理的正确方法是什么?