У меня средняя база пользователей в Memberships
и Users
таблицах (более 10 000 пользователей). По мере роста числа применений процесс входа в систему постепенно замедляется до неприемлемого. Теперь для проверки подлинности одного пользователя требуется 2 секунды, что для меня катастрофа. Поэтому я начал исследовать, что происходит.Вход для провайдера членства не использует индексы из-за нижнего()
Оказалось, что на столбе Username
нет указателя в таблице Users
. Поэтому я создал его. Для моего большого удивления это не помогло. Затем я понюхал процесс входа в систему с помощью SQL Profiler и обнаружил, что запрос аутентификации (sp_executesql
, это LinQ, а не хранимая процедура!) Содержит функцию lower()
в столбце Username
, что делает невозможным использование SQL-индексом SQL Server! Вкусно!
Мои вопросы:
- почему?
- как решить это, не переписывая метод провайдера (желательно)?
Вы разделяли этот сценарий с MS с помощью форума? – SBirthare
Не совсем. Думаю, этот форум намного лучше. –