为什么我的查询提示被忽略了?
Why is my query hint being ignored?
我不明白为什么在我看来我不能使用主键作为索引。
这是主要内容table
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 的段落,你需要确保文本中间没有隐藏任何令人尴尬的内容。 Internet 上的所有 Lorem Ipsum 生成器都倾向于根据需要重复预定义的块,这使它成为 Internet 上第一个真正的生成器。它使用包含 200 多个拉丁词的字典,结合一些模型句子结构,生成看起来合理的 Lorem Ipsum。因此,生成的 Lorem Ipsum 始终没有重复、注入的幽默或非特征词等。
在部分
WITH (INDEX(PK_tFedDBLogMsg))
是PK_tFedDBLogMsg
除了约束的名称,视图上的聚簇索引也是?
如果是这样,请务必同时使用 NOEXPAND
选项。
"Automatic use of indexed view by query optimizer" 仅适用于企业(和开发人员)版本。这意味着在企业版中您还可以通过创建索引视图来优化查询:sql 即使您没有在查询文本中指定它,服务器也可以使用它
"Direct query of indexed views (using NOEXPAND hint)" 适用于所有版本
https://docs.microsoft.com/en-US/sql/sql-server/editions-and-components-of-sql-server-2016
我不明白为什么在我看来我不能使用主键作为索引。
这是主要内容table
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 的段落,你需要确保文本中间没有隐藏任何令人尴尬的内容。 Internet 上的所有 Lorem Ipsum 生成器都倾向于根据需要重复预定义的块,这使它成为 Internet 上第一个真正的生成器。它使用包含 200 多个拉丁词的字典,结合一些模型句子结构,生成看起来合理的 Lorem Ipsum。因此,生成的 Lorem Ipsum 始终没有重复、注入的幽默或非特征词等。
在部分
WITH (INDEX(PK_tFedDBLogMsg))
是PK_tFedDBLogMsg
除了约束的名称,视图上的聚簇索引也是?
如果是这样,请务必同时使用 NOEXPAND
选项。
"Automatic use of indexed view by query optimizer" 仅适用于企业(和开发人员)版本。这意味着在企业版中您还可以通过创建索引视图来优化查询:sql 即使您没有在查询文本中指定它,服务器也可以使用它
"Direct query of indexed views (using NOEXPAND hint)" 适用于所有版本
https://docs.microsoft.com/en-US/sql/sql-server/editions-and-components-of-sql-server-2016