Почему мой запрос игнорируется?

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

Вот основной стол

CREATE TABLE [dbo].[xFedDBLogMsg](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [msgType] [int] NOT NULL,
    [date] [datetime] NOT NULL,
    [delay] [time](7) NOT NULL,
    [error] [bit] NOT NULL,
    [processID] [int] NULL,
 CONSTRAINT [PK_tFedDBLogMsg] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

Вот мнение

CREATE VIEW [dbo].[tFedDBLogMsg]
AS
SELECT
    L.ID
    , L.msgType
    , L.[date]
    , M.MsgSent
    , M.MsgReceived
    , L.[delay]
    , L.error
    , L.processID
    , NEWID() AS INTERNALID
FROM dbo.xFedDBLogMsg AS L
LEFT JOIN FedDBMsg.dbo.tFedDBLogMsg AS M ON (
    M.ID = L.ID
)

И вот процедура, которая дает мне предупреждение:

ALTER PROCEDURE spGetFedDBErrorsByID (
    @pIDS AS dbo.typeNumberList READONLY
)
AS
BEGIN
        SELECT
            MSG.ID
            , MSG.msgType
            , MSG.date
            , MSG.MsgSent
            , MSG.MsgReceived
        FROM (
            SELECT
                CAST(ID.n AS INT) AS ID
            FROM @pIDS AS ID
        ) AS X
        INNER JOIN MyGolf.dbo.tFedDBLogMsg AS MSG WITH (INDEX(PK_tFedDBLogMsg)) ON (
            MSG.ID = X.ID
        )

END   
GO

Warning: Index hints supplied for view 'MyGolf.dbo.tFedDBLogMsg' will be ignored.

PS: Есть много вариантов отрывков Lorem Ipsum, но большинство претерпело изменения в той или иной форме, из-за введенного юмора или случайных слов, которые не выглядят даже немного правдоподобными. Если вы собираетесь использовать отрывок из Lorem Ipsum, вы должны быть уверены, что в середине текста нет ничего смущающего. Все генераторы Lorem Ipsum в Интернете имеют тенденцию повторять заранее определенные фрагменты по мере необходимости, что делает их первым настоящим генератором в Интернете. Он использует словарь из более чем 200 латинских слов в сочетании с несколькими модельными структурами предложений для создания Lorem Ipsum, что выглядит разумно. Сгенерированный Lorem Ipsum, таким образом, всегда свободен от повторения, введенного юмора или нехарактерных слов и т. Д.

2 ответа

Решение

В части

WITH (INDEX(PK_tFedDBLogMsg))

является PK_tFedDBLogMsg кроме имени ограничения, кластеризованного индекса для представления?

Если это так, обязательно используйте NOEXPAND вариант также.

"Автоматическое использование индексированного представления оптимизатором запросов" доступно только в редакции Enterprise (и для разработчиков). Это означает, что в корпоративной версии вы также можете оптимизировать запросы, создав индексированные представления: сервер SQL может использовать его, даже если вы не указали его в тексте запроса

"Прямой запрос индексированных представлений (с помощью подсказки NOEXPAND)" доступен во всех выпусках

https://docs.microsoft.com/en-US/sql/sql-server/editions-and-components-of-sql-server-2016

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