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. LINQ to SQL - カスタムRaw SQLを挿入しますか?
- 3. .NETで "Linq to EF"を "Linq to Sql"に変換する
- 4. T-SQLからLinq-to-SQL
- 5. LINQオブジェクト内からLINQ to SQLクエリを実行できますか?
- 6. Linq to sql添付されたエンティティオブジェクトを挿入する
- 7. Linq-to-sql POCO - NULLアソシエーションのため挿入が失敗する
- 8. linq to sqlの挿入エラーに関するヘルプ
- 9. LINQ TO SQL; GridViewコントロールを使用したDBからの挿入/更新/削除
- 10. LINQ to SQLちょうど挿入してロールバックする
- 11. LINQ to SQL:複数のテーブルにテーブルを挿入
- 12. LINQ to SQLの非生成プロパティの挿入動作
- 13. Linq to SQL NOT NULLを挿入すると "NULL値を挿入できません"
- 14. 大きなSQL挿入TVF対BULK挿入
- 15. ASP.NETでLINQ to SQLを使用して挿入 - エラー
- 16. LINQ to SQL - VBを使用した一括挿入
- 17. LInq to Sql DateTimeの問題が挿入されました
- 18. LINQ to SQLは-error 2 entitesに挿入親と子の関係
- 19. LINQ to SQL XMLファイルからオブジェクトのコレクションを添付データベース
- 20. Insert Allは最後のレコードのみを挿入しますか? LINQ to SQL
- 21. LINQ to SQLとLINQ to DataSet
- 22. 動的SQLストアドプロシージャからLinq to SQL
- 23. LINQ to SQL CRUD(具体的に挿入する) - 複数の項目を挿入する
- 24. SubmitChangesより前のLINQ-to-SQLのオブジェクト
- 25. 大きなバッチ挿入:GrailsからINSERT SQLコードを取得するには?
- 26. データベース内のMVC Linq to SQL更新オブジェクト
- 27. Linq To SQLのアタッチ/リフレッシュEntityオブジェクト
- 28. LINQ to SQLと子オブジェクトの添付
- 29. Ado.netの挿入後にC#Linq-to-SQLが更新されない
- 30. LINQクエリヘルプ(LINQ to SQL)
これは非常に遅くなります。 LINQ-to-SQLはレコードごとに1つの挿入ステートメントを生成します。 –