2012-03-21 38 views
0

我有一个SSIS包,在这个包中我要对3000万条记录进行排序。但是这花了很多时间。有没有任何有效的方法来分类大量的数据?驱动器中的内存与数据相比较少....在SQL Server 2005中对大量数据进行排序

+0

请张贴您的选择,以便我们能更好地了解您正在尝试做什么。 表格有很多列吗?你是否对多个列进行排序? – Cenas 2012-03-21 11:49:05

+0

你按什么排序?该列(或那些列)的表上是否有索引? – 2012-03-21 12:38:49

+2

尽管问题还不清楚,但我怀疑OP是在谈论SSIS排序转换,这是一种不使用任何物理表的内存操作。事实上,被排序的数据可能来自平面文件或其他非关系源。但OP应澄清这一点,否则将无法回答他的问题。 – Pondlife 2012-03-21 12:59:35

回答

0

当记录集太大而无法放入内存时,排序会变得更加昂贵。

一种可能的解决方案是在输入建立时对输入进行排序。

create clustered index IX_YourTable_SortColumn on YourTable(SortColumn) 

如果指数不能被聚集,使用include将列添加到排序索引:

create index IX_YourTable_SortColumn on YourTable(SortColumn) 
    include (col1, col2, col3) 

这种方法,你可以通过添加一个索引输入表,像这样做使前一步更昂贵,并消耗更多的磁盘空间,以便在正确的顺序在磁盘上的记录。你必须测试一下,看是否值得。

0

在处理大型数据集时,SSIS中的排序非常慢。如果你在SSIS排序中,你应该考虑开发你自己的排序组件,或者使用第三方排序组件如NSort