У нас есть база данных с большой информацией о Лицах. Я не буду размещать всю структуру базы данных, потому что это слишком большой, но это выглядит примерно так:Поиск в нескольких таблицах с использованием MS SQL Server 2000
Person
ID
Имя
Улица
Город
Государственный
Страна
Язык
LangCode
Язык
Интерес
ID
LastChangedBy
LastChangedOn
LocalizedInterest
InterestID
LangCode
Описание
PersonInterest
PersonId
InterestID
Теперь, это лишь небольшой пример. В нашей базе данных имеется около 8-9 локализованных таблиц (например, «Интерес»), к которым может быть привязан Лицо. У человека может быть несколько интересов, у человека может быть несколько Работ, у Человека может быть несколько образований, у Человека может быть несколько Опыт, ...
Мне нужно создать функцию поиска. Допустим, вы вводите «tom» в качестве условия поиска. Это должно привести список всех лиц с «томом» в их имени, на улице, в городе, штате, стране, в одном из их интересов, в одном из своих Рабочих мест в одном из своих Образов, в одном из их Поэтов или в одном других связанных таблиц.
Если вы вводите несколько слов для поиска (например, «tom php»), он должен предоставить список всех лиц с «томом» в их имени, улице, городе, штате, стране, в одном из своих интересов , в одном из своих Рабочих мест, в одном из своих Образов, в одном из своих Опыт или в одной из других связанных таблиц И «php» в их имени, улице, городе, штате, стране, в одном из своих интересов, в одном из своих Рабочих мест, в одном из своих Образований, в одном из своих Опыт или в одной из других связанных таблиц.
В настоящее время существует около 4500 записей в таблице Person, и если я делаю внешнее объединение Person со всеми таблицами, которые я должен искать, Есть около 1300000 записей и 40-50 полеев для поиска.
Как мне подойти к этой проблеме, чтобы производительность была приемлемой? Клиент ожидает «что-то вроде Google» с точки зрения скорости и простоты использования.
Мы используем MS SQL Server 2000 и ASP.NET 2.0. Функцию поиска нужно добавить в существующее приложение, и изменение технологии или структуры базы данных не является вариантом.
звучит как случай для индексированного представления, искаженный хранимой процедурой. добавляет индексированный вид «вариант»? вы не меняете структуру. – RPM1984
Я думаю, что нам нужно будет использовать внешние соединения для создания этого представления (человека все еще нужно найти, когда у него нет заданий или интересов), и вы не можете поместить индекс в представление с внешними объединениями. –