1〜2000の数値範囲についてテーブル内の列を検索し、各行全体を別のテーブルにコピーすることはできますか?そうすることにより、技術的にテーブルを小さな部分に分割します。
質問の背後にある質問に対処する:
多分これに答えることができます。 1〜2000の数値範囲についてテーブル内の列を検索し、各行全体を別のテーブルにコピーすることはできますか?
テーブルを「パーティション化」できる列がすでにある場合は、次のようにすることができます。
SELECT *
INTO dbo.newtable_0001_to_2000
FROM dbo.existingtable
WHERE column >= 1 AND column <= 2000;
SELECT *
INTO dbo.newtable_2001_to_4000
FROM dbo.existingtable
WHERE column >= 2001 AND column <= 4000;
...
これにより、予測可能な行数が得られますが、行のsizeは制御されないため、各「パーティション」のデータによっては、これらのテーブルのサイズが等しくない場合があります。
Row_number()関数を使用して、一意の行番号を持つ列を追加できます。
SELECT LINKRECID ,
FLAGS ,
USERID ,
FOLDER ,
FOLDER2 ,
ACCOUNTNO ,
CREATEON ,
MAILSIZE ,
MAILDATE ,
MAILTIME ,
MAILREF ,
LOPRECID ,
RFC822_Old ,
RECID ,
MAILID ,
EXT ,
RFC822 ,
ROW_NUMBER() OVER ( ORDER BY LINKRECID, FLAGS, USERID, FOLDER, FOLDER2, ACCOUNTNO, CREATEON, MAILSIZE, MAILDATE, MAILTIME, MAILREF, LOPRECID, RFC822_Old, RECID, MAILID, EXT, RFC822 ) AS RowNum
しかし、あなたがおそらく大規模に非効率を生み出しているというアーロン・バートランドに強く同意します。 SQLは、Excelよりもデータの検索/フィルタリングに優れています。少なくとも、検索の任意の部分を使用してSQLのデータをフィルター処理してからExcelにプルダウンすることを検討する必要があります。これにより、データ量が削減されます。