SQL クエリを監査した結果、最もコストのかかるクエリの一部が、関数が使用されている .net 認証フレームワークによって作成されていることに気付きましたLOWER
(以下の例を参照)。
私たちのデータベースでは大文字と小文字が区別されないため、パフォーマンスが不必要に低下します。
これらのクエリを変更する最も簡単な方法を探しています。何らかのカスタム メンバーシップ プロバイダーを使用する必要があると思います。
SELECT TOP (1)
1 AS [C1],
[Extent1].[UserName] AS [UserName],
[Extent1].[UserId] AS [UserId],
[Extent2].[Email] AS [Email],
[Extent2].[PasswordQuestion] AS [PasswordQuestion],
[Extent2].[Comment] AS [Comment],
[Extent2].[IsApproved] AS [IsApproved],
[Extent2].[IsLockedOut] AS [IsLockedOut],
[Extent2].[CreateDate] AS [CreateDate],
[Extent2].[LastLoginDate] AS [LastLoginDate],
[Extent1].[LastActivityDate] AS [LastActivityDate],
[Extent2].[LastPasswordChangedDate] AS [LastPasswordChangedDate],
[Extent2].[LastLockoutDate] AS [LastLockoutDate]
FROM [dbo].[Users] AS [Extent1]
INNER JOIN [dbo].[Memberships] AS [Extent2] ON [Extent2].[UserId] = [Extent1].[UserId]
INNER JOIN [dbo].[Applications] AS [Extent3] ON [Extent3].[ApplicationId] = [Extent2].[ApplicationId]
WHERE ((LOWER([Extent3].[ApplicationName])) = @appName) AND ((LOWER([Extent1].[UserName]))
= @userName)