-1
SQL Server 2008中使用SQL Server ROW_NUMBER分頁時在執行計劃執行的太多數
我有巨大的行的表。我使用row_number實現分頁。但我認爲這不是有效的成本。
處決的人數=> 15005. 如果我更改到15005,然後150005,的Excutions增加至150005.
人數是否確定?有什麼方法可以減少這種數量的刺激物嗎?
這是我的查詢
SELECT *
FROM
(
select *, ROW_NUMBER() OVER(ORDER BY send_time) as row_num
FROM [dbo].[GlobalMessage]
WHERE active =1
) as T
WHERE row_num >= 15000 and row_num < 15005
和表信息
CREATE TABLE [dbo].[GlobalMessage](
[id] [int] IDENTITY(1,1) NOT NULL,
[active] [int] NOT NULL,
[message] [nvarchar](200) NOT NULL,
[send_time] [int] NOT NULL,
CONSTRAINT [PK_GlobalMessage] 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]
GO
CREATE NONCLUSTERED INDEX [NonClusteredIndex-20160823-125945] ON [dbo].[GlobalMessage]
(
[active] ASC,
[send_time] DESC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
我不能使用OFFSET/FETCH方法。應該是SQL SERVER 2008 –
加入SQL Server 2008中的選項。 –