なぜLINQ JOINはWHEREとリンクするよりもはるかに高速なのですか?
私は最近VS 2010にアップグレードし、LINQ to Datasetで遊んでいます。ASP.NET WebApplicationのHttpCacheにある承認用の厳密に型指定されたデータセットがあります。 だから私は、ユーザーが何かをすることを許可されているかどうかを確認する最も速い方法が実際に何であるか知りたいと思った。ここに私のデータモデルと、誰かが興味を持っている場合のその他の情報があります。 私は3つの方法をチェックしました: 直接データベース Where条件が "Join"のLINQクエリ-構文 結合を使用したLINQクエリ-構文 これらは、各関数を1000回呼び出した結果です。 1.反復: 4,2841519秒。 115,7796925秒。 2,024749秒 2.Iteration: 3,1954857秒 84,97047秒 1,5783397秒 3.反復: 2,7922143秒 97,8713267秒。 1,8432163秒 平均: データベース:3,4239506333秒。 場所:99,5404964秒。 参加:1,815435秒 なぜLINQの初心者が最も読みやすいように見えますが、Joinバージョンはwhere構文よりもはるかに高速であり、役に立たなくなります。または、クエリで何かを見逃しましたか? これがLINQクエリです。データベースをスキップします。 どこ: Public Function hasAccessDS_Where(ByVal accessRule As String) As Boolean Dim userID As Guid = DirectCast(Membership.GetUser.ProviderUserKey, Guid) Dim query = From …