2009-05-12 3 views
0

У меня таблица таблиц США/штата США в моей базе данных sql server 2005, которая имеет миллион записей. На страницах моего веб-приложения есть текстовое поле местоположения, которое использует функцию автозаполнения AJAX. Мне нужно показать полный город/состояние, когда пользователь вводит 3 символа. Например: Входные BOS .. Выходные: Бостон, МассачусетсУлучшение производительности автозаполнения AJAX

В настоящее время, производительность мудрый, эта функциональность довольно медленно. Как я могу улучшить его?

Спасибо за чтение.

ответ

2

Вы проверили индексы в своей базе данных? Если ваш запрос отформатирован правильно и у вас есть соответствующие индексы в таблице, вы можете запросить базу данных из 5 миллионов строк и получить свои результаты менее чем за секунду. Я бы предложил посмотреть, есть ли у вас индекс в городе с добавленным столбцом State в индекс. Таким образом, когда вы запрашиваете по городу, он возвращает город и государство из индекса.

Если вы запустите свой запрос в студии управления sql и нажмите ctrl-m, вы можете увидеть план выполнения по вашему запросу. Если вы видите что-то вроде сканирования таблицы или сканирования индекса, то у вас неправильный индекс в таблице. Вы хотите, чтобы ваши результаты имели индексный поиск, это означает, что ваш запрос проходит через соответствующие страницы в базе данных, чтобы найти ваши данные.

Надеюсь, это поможет.

0

Я предполагаю, что проблема, с которой вы сталкиваетесь, - это не сама база данных (хотя вы должны ее проверить для проблем с индексами), но количество времени, которое требуется для получения информации из базы данных, соответствующие объекты и т. д., и отправить их в браузер. Если это так, нет много вариантов без какой-либо реальной работы.

  1. Вы можете кэшировать часто просматриваемую информацию на веб-сервере. Если вы знаете, что есть много городов, к которым часто обращаются, вы можете сохранить их заранее, а затем проверить базу данных, если то, что ищет пользователь, не входит в систему. Мы используем prefix trees для хранения информации, когда пользователь печатает что-то, и нам нужно найти его в списке.

  2. Вы можете начать извлекать информацию из базы данных, как только пользователь начнет печатать, а затем соединить полный результат, после того как вы получите больше информации от пользователя. Это немного сложнее, так как вам нужно хранить информацию в памяти между запросами (поэтому, если пользователь набирает «B», вы начинаете поиск и сохраняете его в сеансе. Когда пользователь закончил ввод «BOS», набор результатов из первоначального запроса временно находится в памяти, и вы можете прокручивать и вытягивать подмножество, соответствующее окончательному запросу).

-1

Использование родительского ребенка Dropdowns

+0

жаль ... Didnt совсем понимаю .... не могли бы вы уточнить это? –

Смежные вопросы