Невозможно создать индекс в представлении "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?
Ответы
Ответ 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".
Рассмотрите возможность расширения ссылочного определения определения вручную в определении индексированного представления.