ほとんどの場合、TBHはlinqまたはSQLが正確に問題になるわけではありません。パフォーマンスは、挿入するデータの量、現在テーブルにあるデータの量、および維持しているインデックスに関連します。
次に、データの複数の列にわたってクロスチェックや整合性チェックを行う必要があるかどうか。断片化が悪く、アルゴリズムがないために、インデックスを追加してテーブルを再構築すると、挿入時間が数分から数ミリ秒に短縮される状況がありました。
Linqは、挿入および変更ロジック用のSQLを生成する効果的な方法です。ただし、常に次のパターンになります。
- データベースからデータを取得する
- Linqを使用してデータを変更する
- データベースに変更を送信します。
挿入で利用できるロジックがある場合は、setロジックを使用してSQLで更新を行うことができる場合があります。たとえば、Update Customers Set KeyCustomer = 1 where Sales> 1000000. SQL Serverは、このようなコマンドを、ORMで実行できるよりも数千倍速く処理します。ただし、@ gbnがすでに正しく指摘しているように、強力なSQLコーダーでいっぱいのチームがいない限り、メンテナンスは短期的にはパフォーマンスの向上よりも優先されることがよくあります。
かなりの数のレコードを挿入する必要がある場合は、SSISを介したバッチ読み込みやETLを実際に検討する必要があります。これらのAPIは、よりスマートなアルゴリズムを使用し、挿入ごとではなくバッチで制約チェックを実行するため、パフォーマンスが大幅に向上します。ただし、SSISパッケージの管理は、アプリのボタンをクリックするよりもはるかに手間がかかります。これらはすべて、アプリケーションを設計するときに考慮する必要のある設計上の決定です。