【发布时间】:2012-04-19 19:30:23
【问题描述】:
我真的需要专家的帮助来回答我的问题。
这是场景:
我正在使用 sql 选择查询来检索一百万条记录。 我需要对存储在数据表中的结果记录进行排序和分组(一次执行) 并循环遍历它以对其进行分组和排序。 我知道这太幼稚了,不是处理它的正确方法。 如何有效管理百万条记录并对其应用分组和排序?
这里真的需要帮助。听说过批量执行选择查询,但是在我们手头没有全部数据的情况下如何实现分组和排序? 我不能直接使用 sql order by 和 group by,这不符合我的要求。
这是我现在正在做的事情:
我有以下对象,即用于分组和排序的列名
List<Group> groupList;
List<Sort> sortList;
DataTable reportData; // Here im having the entire records from db
我逐行遍历“reportData”,并匹配当前行和上一行以进行自定义分组和排序。想知道当我们使用批量执行或有任何替代解决方案时如何做到这一点?
【问题讨论】:
-
您可以使用 linq to sql 函数在本地分组:
OrderBy和GroupBy -
如果您不能进行 sql 分组/排序,那么您将不得不在客户端进行,这意味着您必须将整个结果集放入客户端应用程序中。希望你有足够的内存来保存一百万条这样的记录。
-
此外,在应用程序中一次获取数百万条记录并不是一个好习惯;更好的是您使用 SQL Server 端的存储过程对其进行操作,然后获取记录。
-
也许您可以提供一些代码或伪代码中的最小示例。
-
在 SQL Server 端使用视图、函数或存储过程仅获取您需要的数据。您需要发布不同的问题以获得处理百万行的答案。
标签: c# mysql sql-server sql-server-2008