SQL Server 2000, используя подсказку - PullRequest
3 голосов
/ 12 октября 2010
CREATE VIEW xxxx AS
SELECT order_date, 
       DATEPART(W, order_date) AS dayID, 
       Type 
  FROM dbo.Shipment_Dates 
 WHERE (TIP = 'normal') 
OPTION (FAST 20)

Это создание статистики вызывает ошибку в части подсказки. Есть ли обходной путь для добавления подсказки к представлениям?

Ответы [ 2 ]

4 голосов
/ 12 октября 2010

Нельзя использовать подсказки запроса (OPTION) в представлении.

Представление - это просто макрос, который расширяется. Подсказка запроса будет тогда внутренняя в расширении, потому что представление тогда является подзапросом. И подсказки запросов не допускаются в подзапросах.

По сути, вы бы получили:

select
   *
from
   (
   SELECT
     order_date, DATEPART(W, order_date) AS dayID, Type 
   FROM dbo.Shipment_Dates 
   WHERE (TIP = 'normal') 

   option (fast 20)  --not allowed
   ) WasAView

С MSDN :

Подсказки к запросу могут быть указаны только в запросе верхнего уровня, но не в подзапросах.

3 голосов
/ 12 октября 2010

Вместо указания подсказки в определении представления укажите подсказку при использовании представления:

select order_date, dayID, Type
    from xxxx
    option (fast 20)
...