как создать это как индексное представление? - PullRequest
0 голосов
/ 04 августа 2010
SELECT u.Id FROM Users u WHERE FREETEXT((FirstName,Lastname,MiddleName),'') 
UNION  
SELECT c.AId FROM Certification c WHERE FREETEXT(*,'') 
UNION  
SELECT ad.AId FROM ApplicantDetails ad WHERE FREETEXT(*,'') 
UNION  
SELECT eb.AId FROM EducationalBackground eb WHERE FREETEXT(*,'') 
UNION  
SELECT ed.AId FROM EmploymentDetails ed WHERE FREETEXT(*,'') 
UNION  
SELECT e.AId FROM Expertise e WHERE FREETEXT(*,'') 
UNION  
SELECT ge.AId FROM GeographicalExperience ge WHERE FREETEXT(*,'') 
UNION  
SELECT pd.AId FROM ProjectDetails pd WHERE FREETEXT(*,'') 
UNION  
SELECT r.AId FROM [References] r WHERE FREETEXT(*,'') 
UNION  
SELECT t.AId FROM Training t WHERE FREETEXT(*,'')

Ответы [ 2 ]

3 голосов
/ 04 августа 2010

Вы не можете иметь объединение в индексированном представлении или свободном тексте, есть дополнительные ограничения, вот частичный список

  • Выражение для столбца, используемого в предложении GROUP BY, или выражение для результатов агрегата.

  • Производная таблица.

  • Общее табличное выражение (CTE).

  • Функции набора строк.

  • UNION , EXCEPT или INTERSECT.

  • Полнотекстовые предикаты СОДЕРЖИТ или FREETEXT .

  • подзапросов.

  • Внешние или самостоятельные соединения.

  • TOP предложение.

  • Предложение ORDER BY.

  • DISTINCT ключевое слово.

Подробнее см. Здесь http://msdn.microsoft.com/en-us/library/ms191432.aspx

Один из способов обойти это - использовать вместо этого хранимую процедуру

1 голос
/ 04 августа 2010

Вы не можете иметь союзы в индексированном представлении. Вы можете перефразировать запрос как серию соединений. Кроме того, вы не можете использовать FREETEXT с индексированными представлениями. Вы можете получить тот же эффект, назвав столбцы и используя LIKE.

Альтернативой использованию индексированного представления является создание нормальной таблицы и использование триггеров в каждой из исходных таблиц для ее обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...