为什么LINQ JOIN比链接到WHERE这么快?
我最近升级到了VS 2010,并且正在使用LINQ到Dataset。我在ASP.NET WebApplication的HttpCache中有一个用于授权的强类型数据集。 所以我想知道检查用户是否有权做某事的最快方法是什么。如果有人感兴趣,这是我的数据模型和其他一些信息。 我检查了3种方法: 直接数据库 LINQ查询,其中条件为“加入”-语法 带Join的 LINQ查询-语法 这些是每个函数进行1000次调用后的结果: 1.迭代 4,2841519秒 115,7796925秒 2,024749秒 2.迭代 3,1954857秒 84,97047秒 1,5783397秒 3,迭代 2,7922143秒 97,8713267秒。 1,8432163秒 平均: 数据库:3,4239506333秒 其中:99,5404964秒。 加入:1,815435秒。 为什么Join版本比where语法快得多,这使得它变得毫无用处,尽管作为LINQ新手,它似乎最清晰。还是我错过了查询中的内容? 这是LINQ查询,我跳过数据库: 哪里: Public Function hasAccessDS_Where(ByVal accessRule As String) As Boolean Dim userID As Guid = DirectCast(Membership.GetUser.ProviderUserKey, Guid) Dim query = From accRule In …