我正在使用大量数据进行比较..有没有办法将数据分页到数据表

Posted

技术标签:

【中文标题】我正在使用大量数据进行比较..有没有办法将数据分页到数据表【英文标题】:I am using large amount of data for comparison.. is there any idea for paging the data to datatable 【发布时间】:2015-12-28 07:39:27 【问题描述】:

我正在使用大量数据进行比较,同时从数据库中获取数十万条记录并插入数据表中的记录,但是它使用更多的内存和性能非常非常慢..有没有分页数据的想法到数据表。

【问题讨论】:

最好的方法是在数据库中而不是在内存中进行比较。如果由于某种原因这也不可能,则仅将分页数据加载到DataTable 中。在 SQL-Server 中,您可以使用 ROW_NUMBER 函数。 我需要来自 DB 的完整数据,并进行从 isfoc 到 Unicode 的转换.. 为此我需要所有数据.. 而不是一次获取所有数据,我们可以一次获取前 1000 个数据,然后获取下一个 1000 个数据我必须做的.. 【参考方案1】:

有办法做到这一点。这可能是众多解决方案之一。如果假设您有一个表MainTable,请按如下方式创建临时表TempTable

Select Id, ROW_NUMBER() OVER(ORDER BY id) AS RowNum into TempTable from  MainTable

这将为作业开始时的记录创建参考。因此,如果任何记录将被删除或添加,它们不会破坏您的代码。

现在,在 c# 中,首先,检索 max(RowNum) 并使用它和 pageSize 编写逻辑,在其中您在计算循环中选择记录的部分,然后检索数据,如下所示

Select mt.* from MainTable mt inner join TempTable tt on mt.id = tt.id and tt.rownum between <startRow> and <endRow>

其中startRowendRow 是计算值。如果在长时间运行的作业运行时删除了某些行,则此类查询的返回可能不完全是您设置的页面大小。然后清理你的临时表。

【讨论】:

以上是关于我正在使用大量数据进行比较..有没有办法将数据分页到数据表的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将当前日期与以 VARCHAR 格式存储在数据库中的日期进行比较?

限制从drupal 7中的`views_get_view_result()`获取的记录数来进行分页

table大量数据无分页- virtualizedtableforantd

基于redis做缓存分页

有没有办法将数据帧的一列中的所有行与另一个数据帧的另一列(火花)中的所有行进行比较?

有没有办法使用 ApiPlatform 分页来获取总项目?