私は SQL Server 2012 を使用しています。私は巨大なテーブル (30Gb) と、この量のデータ用の非常に基本的な PC を持っています。このテーブルには列 (COL1 と名付けましょう) があり、多数の列ごとに一意の値が 1 つだけあります。この複製されたデータを、一意の値のみが格納される別のテーブルに移動することから始めたいと思います。問題は、それを最速の方法で行う方法です。COL1 でグループ化された各列の個別の値の数を選択するのに約 5 時間かかりました。これで、どの列をテーブルから移動する必要があるかがわかりましたが、それを行うためにさらに 6 ~ 8 時間待ちたくありません。COL1 に非クラスター化インデックスがあり、レコード ID に主キーがあります。作成された他のインデックスでソリューションがうまく機能するかどうか教えてください。
テーブルには 5000 万行と約 100 列があります。列の約 40 には多くの企業の時系列データが含まれており、約 60 には各企業の説明データが含まれており、これが繰り返されています。COL1 は会社の一意の ID です。その結果、時系列データを会社の説明データから分離して、会社の説明が別のテーブルになり、会社ごとに 1 行になるようにしたいと考えています。データセットには約 22,000 の固有の会社 ID があります。会社の説明列のほとんどは varchar です。
各 COL1 値に対して TOP 1 要素を取得する方法が見つかりません。他のオプションの実行には時間がかかると思います。
私が考えることができるクエリの例:
select distinct tbl.COL1, tbl.add1, tbl.add2, other columns with duplicates...
into newtable
from tbl
select COL1, min(add1), min(add2), min of other columns with duplicates...
into newtable
from tbl
group by COL1
ありがとう!