Создание индекса для представления привязки схемы в SQL Server - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь создать индекс для представления привязки схемы. Это представление содержит оператор объединения all и некоторые соединения. Как я могу создать индекс для этого представления? Потому что я использую тип представлений в моей процедуре с использованием левого соединения. Поэтому я должен улучшить производительность.

Например

create table a
(
     prodid int,
     prodname varchar(100)
)

insert into a values(1,'ramesh')

create table b
(
     prodid int,
     prodname varchar(100)
)

insert into b values(2,'kumar')

create view v1 
with schemabinding 
as
     select tb1.prodid, tb1.prodname 
     from dbo.a tb1 
     union all 
     select tb2.prodid, tb2.prodname 
     from dbo.b tb2

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

содержит один или несколько операторов пересечения

Итак, есть ли другой способ создать индекс для этого представления?

CREATE UNIQUE CLUSTERED INDEX  CX_V1
ON dbo.v1(prodid, prodname); 

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Проблема не в SCHEMABINDING, а в том, что UNION ALL не допускается в представлении индекса. Я ожидаю, что сообщение об ошибке будет ясно об этом. См. документацию для требований к представлению индекса .

Кроме того, зачем индексировать это представление? Я не ожидал бы, что индексированное представление значительно улучшит производительность, предполагая, что базовые таблицы имеют уникальный некластеризованный индекс для prodid и prodname.

0 голосов
/ 02 сентября 2018

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

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