2013-12-24 5 views
5

Мне было интересно узнать о лучшем быстром поисковом запросе, который используется для получения информации о человеке. В настоящее время у нас есть база данных, в которой есть столбцы для имени, фамилии и приветствия. Пользователю должно быть разрешено искать любую перестановку и комбинацию этих столбцов. Простой поисковый запрос занимает много времени и, следовательно, делает этот быстрый поиск медленным (так как запрос должен проверять все строки для имени, фамилии и приветствия). Не могли бы вы рассказать о различных быстрых или передовых методах, которые могут быть использованы для этой цели.Быстрый поиск имени человека

+0

Это префиксный поиск или прямое сравнение? – CodingIntrigue

+0

Сколько строк в таблице? Сколько строк в результатах поиска? (Все они или с разбивкой на страницы?) Какова избирательность приветствия? Я полагаю, что некоторые ценности очень распространены, такие как «Г-н», а другие - менее (например, «Доктор»)? –

+0

4601802 строки есть. Да, эти значения являются общими, в этом случае мы показываем топ 200 строк – amair

ответ

1

1.Вы можете создать индексы для столбца, который, по вашему мнению, будет проводиться большую часть времени. 2.Вы можете объединить имя + фамилию и фамилию и сохранить в представлении (и это представление должно обновляться для каждой вставки имени), а затем запрашивать через это представление, а не запрашивать через базу данных. Вам необходимы надлежащее выполнение запроса plan.Check это один из стратегического решения https://www.simple-talk.com/sql/performance/execution-plan-basics/

+0

Объединение имени и фамилии не дает преимуществ для поиска. –

0

Вы должны создать индекс на этих 3-х столбцов Firstname, LastName и приветствие так путем создания индекса будет искать быстрое поэтому для точки производительности запроса, который мы создаем index.index, происходят очень быстро. для узнать о ускорить ваш запрос click here

+0

Статья, в которой вы указали, относится к индексированным представлениям. Они не будут более полезными, чем обычные индексы. –

2

Я думаю Полнотекстовый поиск должен решить вашу проблему (Предположив базы данных является MS SQL Server) Быстрая ссылка для справки http://technet.microsoft.com/en-us/library/ms142571.aspx

Я не мог прокомментировать вопрос, потому что моя репутация низкая

+0

FTS (используя CONTAINS) будет быстрее/эффективнее, чем использование LIKE с подстановочным знаком. FTS включает в себя возможность определять полные текстовые индексы, которые FTS может использовать. LIKE с подстановочным знаком с левой стороны (IE: LIKE '% Search) не может использовать индекс (если он существует для столбца), гарантируя сканирование таблицы. Я не тестировал и сравнивал, но регулярное выражение имеет ту же ошибку. Чтобы уточнить, LIKE '% Search' и LIKE '% Search%' не могут использовать индекс; LIKE 'Search%' может использовать индекс, который я использую в моем запросе. – amair

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