多少の違いがあると思います。 質問の例を使ってみましょう。私は、クエリが発射SQLプロファイラで確認(UsersContext.Set(typeof(User)) as IQueryable<User>).Any(u => u.FirstName.ToLower() == userObj.FirstName && u.LastName.ToLower() == userObj.LastName);
:UsersContext.Users.Any(u => u.FirstName.ToLower() == userObj.FirstName && u.LastName.ToLower() == userObj.LastName);
方法2: は私がUser.FirstNameとUser.LastNameに基づく任意の(Userテーブルには複数のフィールドを持っている)
メソッド1をやりたいと仮定します方法1である:方法2から
exec sp_executesql N'SELECT
CASE WHEN (EXISTS (SELECT
1 AS [C1]
FROM [dbo].[User] AS [Extent1]
WHERE (((LOWER([Extent1].[FirstName])) = (LOWER(@p__linq__0))) AND ((LOWER([Extent1].[LastName])) = @p__linq__1)
)) THEN cast(1 as bit) WHEN (NOT EXISTS (SELECT
1 AS [C1]
FROM [dbo].[User] AS [Extent2]
WHERE (((LOWER([Extent2].[FirstName])) = (LOWER(@p__linq__0))) AND ([Extent2].[LastName] = @p__linq__1)
)) THEN cast(0 as bit) END AS [C1]
FROM (SELECT 1 AS X) AS [SingleRowTable1]',@p__linq__0 nvarchar(4000),@p__linq__1 nvarchar(4000)',@p__linq__0=N'jack',@p__linq__1=N'saw'
:
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[FirstName] AS [FirstName],
[Extent1].[LastName] AS [LastName],
[Extent1].[Email] AS [Email],
.......other fields......
FROM [dbo].[Users] AS [Extent1]
テーブルには40000個のレコードがあり、Method1は約20ミリ秒、Method2は約3500ミリ秒かかります。
@abatishchev http://msdn.microsoft.com/en-us/library/gg696521(v=vs.103).aspx設定がありません方法 –
Dismissile
確かに、ありがとう、愚かな私:) – abatishchev