2012-03-21 8 views
0

私はソートするために3000万のレコードを取っているSSISパッケージを持っています。しかし、これは非常に時間がかかる。大量のデータを効率的にソートする方法はありますか?ドライブ内のメモリがデータと比較して少ない...SQL Server 2005で非常に大量のデータを並べ替える

+0

あなたの選択を投稿して、あなたがしようとしていることのより良いアイデアを出すことができます。 テーブルには多くの列がありますか?複数の列をソートしていますか? – Cenas

+0

どの列をソートしていますか?その列(またはそれらの列)のテーブルにインデックスがありますか? –

+2

質問は不明ですが、私はOPが物理テーブルを使用しないメモリ内操作であるSSISソート変換について話していると考えています。実際、ソートされるデータは、フラットファイルまたは他の非リレーショナルソースからのものである可能性があります。しかし、OPはこれを明確にするか、彼の質問に答えることはできません。 – Pondlife

答えて

0

レコードセットが大きすぎてメモリに収まらない場合、並べ替えが高価になります。

考えられる解決策の1つは、ビルド中に入力をソートすることです。

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

このアプローチ:インデックスは、ソートされたインデックスに列を追加するincludeを使用してクラスタ化することができない場合は

create clustered index IX_YourTable_SortColumn on YourTable(SortColumn) 

:あなたは次のように、入力テーブルにインデックスを追加することによってこれを行うことができますディスク上のレコードを正しい順序で保持するために、前のステップをより高価にし、より多くのディスクスペースを消費します。トレードオフに値するかどうかをテストする必要があります。

0

大規模なデータセットを扱う場合、SSISのソートは非常に遅いです。 SSISソートの必要がある場合は、独自のソートコンポーネントを開発するか、NSortのようなサードパーティのソートコンポーネントを使用するかのいずれかを検討する必要があります。

関連する問題