1

这是我的问题,我有一个大约 5,000,000 行的 SQL Server 2016 表,它有一个聚集的列存储索引。

以下查询以毫秒为单位运行:

SELECT * FROM Table Extent1
WHERE ([Extent1].[CustomerIden] = '0070db55-6c30-415c-8146-20f43c870107')
AND ([Extent1].[StartTime] <= '2015-02-17 08:54:35')
ORDER BY [Extent1].[StartTime] DESC 

在末尾添加“OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY”,例如:

SELECT * FROM Table Extent1
WHERE ([Extent1].[CustomerIden] = '0070db55-6c30-415c-8146-20f43c870107')
AND ([Extent1].[StartTime] <= '2015-02-17 08:54:35')
ORDER BY [Extent1].[StartTime] DESC 
OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY 

需要几分钟才能运行,我们发现问题是查询没有返回 20 行,如果我们将查询更改为

SELECT * FROM Table Extent1
WHERE ([Extent1].[CustomerIden] = '0070db55-6c30-415c-8146-20f43c870107')
AND ([Extent1].[StartTime] <= '2015-02-17 08:54:35')
ORDER BY [Extent1].[StartTime] DESC 
OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY 

它再次以毫秒为单位执行。

关于如何克服这个问题而不必先进行计数以手动设置OFFSETFETCH NEXT值的任何想法?

4

0 回答 0