LINQ to SQLを使用して100,000レコードのカウントを持つリストオブジェクトをSQLに取得する最も速い方法は何ですか?LINQ to SQLの大きなオブジェクトを.NETから挿入する
答えて
あなたは可能性:
MyContext.Items.InsertAllOnSubmit(
from i in list
select new Item
{
//map properties
});
Psと。その多くのデータを挿入しようとしませんでした
LINQ2SQLはバッチ挿入をサポートしていません。独自のSQLを実行するか、それをサポートする別のフレームワークを使用してください(Entity Frameworkはそう思いますが、私は確信できません)。
誰かが私の答えに問題がありますか?話す、私は聞くことができない。 – leppie
発信元の100,000の発信元がどこにあるかを正確に指定したい場合があります。
非データベースソースからレコードを取得する場合は、レコードを挿入するための最も速い方法は、InsertAllOnSubmitメソッドを使用することです。もちろん、これはトランザクション内の100,000個の挿入ステートメントを意味しますが、それ以上の細部はなく、この点で多くの選択肢はありません。
データベースからレコードを取得する場合は、ストアドプロシージャを呼び出す方がパフォーマンスが向上します。たとえば、ストアドプロシージャで:
INSERT INTO TableA
SELECT * FROM TableB
次に、LINQでストアドプロシージャを呼び出します。次いで、及び実行するSqlCommandを使用 -
質量データについてデータベースでない場合でも、SqlBulkCopy経由でバルク転送を使用できます。 dbからだけでなく、IDataReaderを作成する方法はたくさんあります。 –
、最速方法は、ステージングテーブルに(細工IDataReader
を介して)データをプッシュするSqlBulkCopy
ようなものを使用することである(同一のレイアウトを、ないインデックスの/ etc)ステージングテーブルから実テーブルにデータをプッシュするストアドプロシージャ。ただし、LINQ-to-SQLは(ストアドプロシージャの呼び出しに使用しない限り)ここには含まれていません。
通常のLINQ-to-SQL InsertOnSubmit
を使用してみてください。最適化しようとする前に、データの量がどれほど大きいかを評価してください。準最適であっても「十分に速い」かもしれません。
IDataReader
はかなり簡単に作成できます。私はしばしばhereからcsvを使います。リストから1つを作成するには、hereからSimpleDataReader
を借りて、DoRead
を上書きすることができます。
この問題を自分自身で解決しようとしています.160,000レコードのためにInsertOnSubmitがこれまでのところ終わっています。 –
あなたが立ち往生したら教えてください... –
- 1. LINQ to SQL 1:1挿入
- 2. .NETで "Linq to EF"を "Linq to Sql"に変換する
- 3. Linq to sql添付されたエンティティオブジェクトを挿入する
- 4. linq to sqlの挿入エラーに関するヘルプ
- 5. Linq-to-sql POCO - NULLアソシエーションのため挿入が失敗する
- 6. LINQオブジェクト内からLINQ to SQLクエリを実行できますか?
- 7. LINQ TO SQL; GridViewコントロールを使用したDBからの挿入/更新/削除
- 8. LINQ to SQLちょうど挿入してロールバックする
- 9. 大きなSQL挿入TVF対BULK挿入
- 10. LINQ to SQL:複数のテーブルにテーブルを挿入
- 11. Linq to SQL NOT NULLを挿入すると "NULL値を挿入できません"
- 12. LINQ to SQLの非生成プロパティの挿入動作
- 13. LINQ to SQL - VBを使用した一括挿入
- 14. LINQ to SQLは-error 2 entitesに挿入親と子の関係
- 15. LInq to Sql DateTimeの問題が挿入されました
- 16. LINQ to SQL XMLファイルからオブジェクトのコレクションを添付データベース
- 17. 大きなバッチ挿入:GrailsからINSERT SQLコードを取得するには?
- 18. LINQ to SQL CRUD(具体的に挿入する) - 複数の項目を挿入する
- 19. LINQ to SQLとLINQ to DataSet
- 20. 動的SQLストアドプロシージャからLinq to SQL
- 21. 大きな柱と挿入/更新SQL Serverのタイムアウト
- 22. SubmitChangesより前のLINQ-to-SQLのオブジェクト
- 23. Ado.netの挿入後にC#Linq-to-SQLが更新されない
- 24. 挿入紛争LINQツーSQL
- 25. LINQ to SQLと子オブジェクトの添付
- 26. データベース内のMVC Linq to SQL更新オブジェクト
- 27. Linq To SQLのアタッチ/リフレッシュEntityオブジェクト
- 28. LINQ to SQLのトランザクションと挿入されたレコードのIDを読み取る
- 29. Linq To SQL - 挿入されたレコード数を取得する方法
- 30. WPF DatagridからLINQ-to-SQL経由で新しいレコードを挿入できません
これは非常に遅くなります。 LINQ-to-SQLはレコードごとに1つの挿入ステートメントを生成します。 –