Подтвердить что ты не робот

Невозможно создать индекс в представлении "View_Table_Name", потому что представление не привязано к схеме

Я использую Views в моей хранимой процедуре (SQL-Server). Для повышения производительности я попытался создать INDEX этого представления.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER VIEW VW_Table_Name
AS
SELECT Col1,Col2,Col3 FROM Table_Name 
GO
CREATE UNIQUE CLUSTERED INDEX Index_Name ON [VW_Table_Name](Col1)
GO

Здесь я получаю ошибку, например

Msg 1939, уровень 16, состояние 1, строка 1 Невозможно создать индекс в представлении "VW_FML", потому что представление не связано с схемой.

Можно ли создать Index for View в SQL Server?

4b9b3361

Ответ 1

Существует ряд ограничений на индексированные представления: нет подзапросов, союзов, внешних соединений и т.д. Подробнее см. в этой статье. Но для вашего случая вам просто нужно создать представление с привязкой схемы.

CREATE VIEW VW_Table_Name WITH SCHEMABINDING
AS
SELECT Col1,Col2,Col3 FROM Table_Name 
GO

Ответ 2

Поскольку вы пытаетесь создать индексированный вид или материализованный вид. Это необходимо для просмотра опции "WITH SCHEMABINDING", если вы создаете кластерный указатель поверх нее.

Вид - это не что иное, как хранимый запрос, если вы собираетесь создать на нем индекс, тогда индекс будет использовать этот запрос и выполнить его в этой таблице, в этом случае вам нужно убедиться, что таблица не изменяется под ним. Таким образом, принудительно применяя это ограничение, SQL Server гарантирует, что все будет синхронизироваться.

Ответ 3

Microsoft, если вы слушаете, было бы очень полезно, если бы представления (которые использовали другие представления WITH SCHEMA BINDING) могли быть проиндексированы для создания материализованных представлений. Это кажется вполне возможным. Ключ - последнее предложение сообщения об ошибке.

Это полный текст ошибки: Msg 1937, уровень 16, состояние 1, строка 2 Невозможно создать индекс в представлении "TEST.dbo.v_NH_GRM_SAP_bridge", потому что он ссылается на другое представление "dbo.v_NH_GRM_SAP_bridge_key_1". Рассмотрите возможность расширения ссылочного определения определения вручную в определении индексированного представления.