我有2個表SQL Server的執行計劃問題
CREATE TABLE [dbo].[T2] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[F1] NVARCHAR (100) NULL,
[F2] NVARCHAR (100) NULL,
[F3] NVARCHAR (MAX) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
GO
CREATE NONCLUSTERED INDEX [IX_T2_F1_F2]
ON [dbo].[T2]([F1] ASC, [F2] ASC);
和
CREATE TABLE [dbo].[T3] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[F1] NVARCHAR (100) NULL,
[F2] NVARCHAR (100) NULL,
[F3] NVARCHAR (MAX) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
GO
CREATE NONCLUSTERED INDEX [IX_T3_F1_F2]
ON [dbo].[T3]([F1] ASC, [F2] ASC)
INCLUDE([F3]);
這些都是我的執行計劃
的問題是,爲什麼查詢# 2的執行計劃不是Index Seek (NonClustered)
,爲什麼查詢優化器選擇掃描c關於PK的索引,而不是非聚集索引{F1,F2}
?
更新#1:
你可能在這些表中有0行,所以沒關係。在那裏放置一百萬行並更新你的統計數據。 –
@ ta.speot.is我在這兩個表中都有100k行 – dizar47
那麼執行計劃中的那些箭頭非常窄 - SQL Server估計有多少行? –