Мое секционированное представление все еще получает доступ ко всем базовым базовым таблицам

Я пытаюсь создать секционированное представление, однако мой план выполнения показывает, что он все еще обращается к обеим базовым таблицам.

SQL Fiddle здесь

Почему мой запрос все еще обращается к обеим базовым таблицам и затем объединяет их?

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 " Использование секционированных представлений".

Другие вопросы по тегам