В моем существующем приложении asp.net у меня есть элемент управления автозаполнением ajax, который использует веб-метод для получения результатов автозаполнения, которые интернируют попадание в хранимую процедуру. Но поскольку попадание в базу данных каждый раз является дорогостоящим делом и проблемой производительности, мы хотели кешировать все результаты поиска, которые составляют около 45 000 строк, и использовать данные в касках для фильтрации и получения данных.
мы используем запрос linq для фильтрации с помощью метода contains для проверки префикса. Но если я использую кэшированную фильтрацию данных, это займет намного больше времени, чем оригинальная реализация, которая каждый раз поражает дБ.
Есть ли какой-нибудь подход, который вы можете мне предложить, который может дать намного более быстрый поиск набора результатов, когда пользователь вводит данные в пользовательском интерфейсе.
Я знаю, что поддержание 45 тыс. Строк и фильтрация - это настоящая боль. Удар по БД был бы намного лучшим подходом.
Поскольку мы сталкиваемся с некоторыми проблемами с производительностью, пожалуйста, дайте мне знать, как лучше.
Замена автозаполнения Ajax на плагин автозаполнения Jquery имеет какое-либо значение ..?
Код:
Как и любой другой код автозаполнения ajax:
<ajaxToolkit:AutoCompleteExtender
runat="server"
ID="autoComplete1"
TargetControlID="myTextBox"
ServiceMethod="GetUserList"></ajaxToolkit:AutoCompleteExtender>
[WebMethod]
public string[] GetUserList(string prefix)
{
return UserManager.GetUserNamesBySearch(prefix);
}
public string[] GetUserNamesBySearch(string prefix)
{
List<User> userCollection=UserServiceMgr.GetUserList(prefix);
var filteredUsers=from user in userCollection
Where user.FirstName.contain(prefix)
select user.FirstName.
filterdUsers.ToArray();
}
Заранее спасибо
Suri