我真的需要专家的帮助来回答我的问题。
以下是场景:
我正在使用sql select查询来检索一百万条记录。我需要对存储在datatable中的结果记录执行排序和分组(在一次执行中),并循环遍历它以对其进行分组和排序。我知道这很幼稚,也不是正确的处理方式。如何有效地管理百万条记录,并对其进行分组和排序?
在这里真的需要帮助。听说过批量执行select查询,但是当我们手头没有完整的数据时,如何实现分组和排序呢?我不能直接使用sql order by和group by,这违背了我的要求。
下面是我现在正在做的事情:
我有以下对象,即用于分组和排序的列名
List<Group> groupList;
List<Sort> sortList;
DataTable reportData; // Here im having the entire records from dbIm逐行循环遍历“reportData”,并匹配当前行和前一行以进行自定义分组和排序。想知道当我们使用批处理执行或有任何替代解决方案时,如何做同样的事情吗?
发布于 2012-04-06 16:22:06
我需要对存储在数据表中的结果记录执行排序和分组(在一次执行中),并循环遍历它以对其进行分组和排序。
干什么用?For what?
我是认真的。
不要拉,然后试着用愚蠢的对象模型来规划智能(对不起,数据集并不是特别智能)。
Group和sort在select语句中,提取已分组和联接的数据,然后使用它。
17年前,当最初的版本发布时(4.2是,sysase sql server的一个端口),一百万条记录对于sql server来说是一个很小的数据量。如今,它很可能适合处理器的三级缓存,而不是真正的sql服务器,甚至意识到它刚刚处理过。
SQL是做项目的特别好的广告,自从他们装饰了MARS,你甚至可以在一个连接上运行多个查询,这在这里很方便。
因此,返回-丢弃数据集和“我尝试编写排序算法”,并创建适当的SQL语句,以便在需要时提取数据。
发布于 2012-04-06 12:30:39
听起来你应该实现Partition Pruning。分区将允许像您所请求的那样分离内容,以便有更快的查询。
发布于 2012-04-06 14:25:03
如果我没有理解错的话,在您的例子中,我会创建一个临时的数据库表,其结构是我想要的,特别是用来覆盖我的分组。
然后,我会从主表中选择记录,并将它们插入到临时记录中,附加所有修改,包括分组。
还应该应用关于如何对它们进行排序的特定索引。
在此之后,只需从该表中进行选择,执行您必须执行的操作,最后如果不再需要数据,则删除临时表。
我会选择上面的解决方案,因为内存中有一百万条记录让我觉得有麻烦……
https://stackoverflow.com/questions/10039101
复制相似问题