sql >> データベース >  >> RDS >> Sqlserver

Entity Framework 4 での一時テーブルまたはテーブル変数の使用を推奨します。Performance Entity フレームワークを更新します

    30 万行のようなデータ ボリュームの場合、EF は忘れてしまいます。次のようなテーブルを用意してこれを行います:

    BatchId  RowId
      

    ここで、RowId は更新する行の PK であり、BatchId はこの 30 万行の「実行」を参照するだけです (一度に複数を許可するためなど)。

    新しい BatchId を生成し (これは一意のものである可能性があります -Guid が頭に浮かびます)、SqlBulkCopy を使用してこのテーブルにレコードを挿入します。つまり、

    100034   17
    100034   22
    ...
    100034   134556
      

    次に、simgle sproc を使用して結合と更新を行います (そして、テーブルからバッチを削除します)。

    SqlBulkCopy は、この量のデータをサーバーに取得する最速の方法です。往復で溺れることはありません。 EF はオブジェクト指向です。多くのシナリオに適していますが、このシナリオには適していません。



    1. Oracleデータベースの文字列列の一定時間インデックス

    2. 今月の記録を取得する

    3. PostgreSQLでデータベースのサイズを取得する2つの方法

    4. 2つのmysql列を追加して合計を返す際の問題