linq to sqlのパフォーマンスに関する記事をたくさん読んだことがあります。私が得た結果はそれが通常のアプローチより遅いということです(DALまたはマイクロソフトエンタープライズライブラリ)。パフォーマンス調整後も読み取りと書き込みの両方の操作が遅くなりますObjectTrackingや他のトリックを無効にするのが好きです。私はそれが迅速な開発、クリーンなコードなどのようなプロンがあることを知っていますが、パフォーマンスについてはどうでしょうか。
私は読み取り操作のみに使用した場合はどうなります。
あなたの提案をお願いします。
スタックオーバーフローには十分うまくいくようです;-pコンパイル済みクエリこれは、(たとえば)適切なDB設計と比較して正しい列/行をフェッチし、n + 1のロードを回避することと比較して、ボトルネックになる可能性は低いです。
読み取り操作の場合、LINQ To SQLはSQLを直接書き込むのとほぼ同じくらい高速であるはずです。 SQLを作成することによるオーバーヘッドはそれほど顕著ではありません。手作業でクエリを書いた場合ほど最適ではないクエリがいくつかあるかもしれませんが、私の経験ではほとんどの場合非常にうまく機能します。
一括更新の場合、LINQ To SQLは行を一度に1つずつ処理するため、通常は遅くなります。こんなことはできませんUPDATE Foo SET x = 0 WHERE id BETWEEN 100 AND 200
すべての行を取得せずにLINQ to SQLで。現時点では、この種の操作にはSQLを手で書くのが最善です。
更新と削除は、影響を受けるオブジェクトごとに別々のステートメントが生成されるため、LINQ to SQLが現在問題となっている場所です。
とは言っても、このブログ記事では、両方の操作を1つのステートメントにまとめる方法について詳しく説明しています。これは、パフォーマンスの向上に役立ちます。LINQ to SQLによるバッチ更新と削除。
特にクエリが特定の結果を得るために使用されているような場合、コンパイルされたクエリは頻繁に使用されるクエリにも役立ちます。この記事も参考になるでしょう。LINQ to SQLアプリケーションのパフォーマンスを向上させる10のヒント。