Мое секционированное представление все еще получает доступ ко всем базовым базовым таблицам
Я пытаюсь создать секционированное представление, однако мой план выполнения показывает, что он все еще обращается к обеим базовым таблицам.
Почему мой запрос все еще обращается к обеим базовым таблицам и затем объединяет их?
1 ответ
Скорее всего, проблема в том, что ваш CHECK
Ограничение не соответствует вашему WHERE
состояние.
Ваши ограничения проверки имеют вид:
(datepart(year,[StockDate])=(2016))
Ваш WHERE
состояние в виде:
StockDate = '20160101'
Измените ограничения проверки, чтобы использовать полные даты (плюс нет необходимости использовать функцию - DATEPART
- за такой простой фильтр). Следующее для таблицы 2016 года:
[StockDate] >= '01/01/2016' AND [StockDate] <= '12/31/2016'
Повторите это для других таблиц, изменив год в обоих предикатах, чтобы он соответствовал году таблицы.
Обратите внимание, что в приведенном выше синтаксисе не указана временная составляющая, поскольку DATE
тип данных. Если бы тип данных был DATETIME
тогда конец диапазона должен быть выражен как:
'12/31/2016 23:59.59.997'
Дополнительную информацию о секционированных представлениях см. На странице MSDN " Использование секционированных представлений".