【发布时间】:2019-09-24 06:10:37
【问题描述】:
我知道从表中选择单行的两种不同方法(没有保证单条记录的 where 子句)。
SELECT TOP 1 [Id]
FROM [MyTable]
ORDER BY [Id] ASC
或
SELECT [Id]
FROM [MyTable]
ORDER BY [Id] ASC
OFFSET 0 ROWS
FETCH NEXT 1 ROWS ONLY
其中哪一个在统计上更快? ([Id] 是主键)
或者有没有我不知道的更快的替代方案?
【问题讨论】:
-
它们应该有相同的执行计划和相同的性能。
-
两者都试一下,看看执行计划。
-
Or is there a faster alternative...SELECT MAX([Id]) AS [Id] FROM [MyTable]。如果执行计划更快,则必须比较执行计划,这取决于您的索引结构。另见MAX vs Top 1 - which is better? -
您可以在 SELECT 之前使用 SET STATISTICS PROFILE 关键字检查更快的方式,这样会尝试请求并返回您的统计信息请求:)
-
由于某种原因,我对执行计划的理解异常糟糕。 @KiloumapMrz 我会试试的,谢谢!
标签: sql sql-server performance query-performance sqlperformance