2012-03-21 75 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