У меня есть следующее представление
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
ALTER VIEW web.vGridHotelBooking
WITH SCHEMABINDING
AS
SELECT
HBK_ID,
COF_ID,
COF_CST_ID,
HTL_Name,
COF_Data
FROM
web.HotelBooking
INNER JOIN
web.CustomerOfferBundle ON COF_ID = HBK_COF_ID
INNER JOIN
web.Hotel ON COF_HTL_ID = HTL_ID;
GO
CREATE UNIQUE CLUSTERED INDEX [CLI_vGridHotelBooking__HBK_ID]
ON [web].[vGridHotelBooking] ([HBK_ID]) ON [PRIMARY]
GO
Когда я выполняю инструкцию SELECT * FROM web.vGridHotelBooking
, я ожидаю увидеть одно сканирование кластерного индекса, но вместо этого я получаю это
Это тот же план, который я получаю при непосредственном выполнении операторов SELECT.
Что я здесь не так делаю?Я много раз использовал материализованные представления, и у меня не было такой проблемы раньше.
EDIT 1
Выполнение запроса с предложением WHERE также не помогает.
SELECT COF_ID
FROM web.vGridHotelBooking
WHERE COF_ID = '06A41DB5-8F14-4E6C-9084-3009E0626DAA';
РЕДАКТИРОВАТЬ 2
SELECT HBK_ID
FROM web.vGridHotelBooking
WHERE HBK_ID = 1801151518187788
РЕДАКТИРОВАТЬ 3
SELECT HBK_ID
FROM web.vGridHotelBooking WITH (INDEX(CLI_vGridHotelBooking__HBK_ID))
WHERE HBK_ID = 1801151518187788;
РЕДАКТИРОВАНИЕ 4 Выполнение запроса сНа этот раз NOEXPAND дал правильный план.
SELECT *
FROM web.vGridHotelBooking WITH (NOEXPAND)
WHERE HBK_ID = 1801151518187788;
Итак, вопрос - почему это так?Должен ли я беспокоиться об этом?Поскольку таблица CustomerOfferBundle
содержит приблизительно 500 000 строк, а таблица Hotel
приблизительно 100 000
РЕДАКТИРОВАТЬ 5