Linq2SQL クエリは通常、データベース上でパラメーター化されたクエリとして処理されます。
一般に、最新の RDBMS のインライン ステートメントよりもストアド プロシージャの方が効率的ですか? のようなパフォーマンスの違いを比較する SO に関する多くの議論があります。およびストアド プロシージャとパラメータ化されたクエリ
一般に、Linq2SQL のような ORM が提供する柔軟性の利点は、認識されているパフォーマンスの損失を上回るというのがコンセンサスだと思います。
IMO、LINQ2SQL は、ほとんどのデータ アクセス要件に対してジョブの 90% を問題なく実行します。PROC がより意味のある特別なニーズがある場合 (たとえば、本当にデータ集約型またはバッチ トランザクション)、1 つまたは 2 つ書くことができます。 procs とこれらをDataContext
.
ただし、私たちが取り組んでいる間は、新しいプロジェクトで Linq2SQL を検討するつもりはありません。Entity Framework 4+ を見てみませんか? (OPは.NET 3.5を使用しています)
編集
テーブルの外部キーが正しく設定されている場合、基になるテーブルを Linq DBML にドラッグすると、ORM が基になるナビゲーションを処理するため、「手動で」結合する必要はほとんどないことがわかります。
例えば
var myUpvotes = Users.Where(u => v.UserId == someUser)
.Votes.Where(v => v.Upvote == true)
.Count();
必要な概念の 1 つは、Eager と Lazy loading です。これは間違いなく「結合」のパフォーマンスに影響します