В нашем пользовательском интерфейсе пользователи могут бесплатно отправлять текстовые запросы, применяемые к нескольким полям.Linq с несколькими содержит
q = q.Where(p => p.Account.Contains(query)
|| p.AccountName.Contains(query)
|| p.AccountAKA.Contains(query)
|| p.AccountRef.Contains(query));
Это означает SQL. Есть ли более оптимальный способ опроса, поскольку это происходит медленно.
Существует около 20 000 строк. Размер диска базы данных не имеет значения, использование памяти.
Проблема в том, что 'LIKE% query%' недостаточно эффективен. Проблема может решить индексирование: http://blogs.msdn.com/b/varund/archive/2009/11/30/index-usage-by-like-operator-query-tuning.aspx –
Единственное решение, которое я вижу решите, что нужно создать свою собственную таблицу индексирования (индексирование всех строк p.Account [x..y]). Но для этого требуется много памяти. Сколько строк у вас есть в базе данных? –
Когда пользователь вводит запрос, он запрашивает базу данных синхронно или асинхронно? Потому что улучшение скорости запроса кажется довольно сложным. Таким образом, вы можете работать с самим пользователем. –