在SQL Server中选择下一条记录的最快方法?

在SQL Server中选择下一条记录的最快方法?,sql,sql-server,Sql,Sql Server,有没有比这更快或更有效的方法来选择下一条记录 SELECT TOP 1 * FROM MyTable WHERE ID > @LastIDRead ORDER BY ID 注意:我需要所有列,如果ID上有聚集索引,这是最快的方法。如果ID上有聚集索引,这是最快的方法。这里的“下一条记录”是不相关的,您想要的是根据其ID获得一条记录。如果ID被索引,这将是最好的选择。下一条记录在这里是不相关的,您想要的是根据其ID获取记录。如果ID被索引,那将是最好的选择。是ID您的聚集索引吗?是的

有没有比这更快或更有效的方法来选择下一条记录

SELECT TOP 1 * 
FROM MyTable 
WHERE ID > @LastIDRead 
ORDER BY ID

注意:我需要所有列,如果ID上有聚集索引,这是最快的方法。

如果ID上有聚集索引,这是最快的方法。

这里的“下一条记录”是不相关的,您想要的是根据其ID获得一条记录。如果ID被索引,这将是最好的选择。

下一条记录在这里是不相关的,您想要的是根据其ID获取记录。如果ID被索引,那将是最好的选择。

ID
您的聚集索引吗?是的ID是聚集索引,否,这里没有光标。SQL server是否会缩短顺序,因此它只从索引中获取一行?或者它必须读取完整的索引?我只是回答了我自己的问题。它似乎缩短了order by的路径。
ID
是您的聚集索引吗?是的ID是聚集索引,否,这里没有光标。SQL server是否缩短了order by,因此它只从索引中获取一行?或者它必须读取完整的索引?我只是回答了我自己的问题。根据我提供的查询,您将如何解释它?不是选择下一条记录吗?是的,但我的意思是“下一条”字不重要,您所做的是查找特定的行,因此在ID=LastIDRead和passig LastIDRead asn当前ID+1的情况下也会这样做+1的问题是,根据我提供的查询,当存在间隙(例如删除的记录)时,你将如何解释它?这不是选择下一条记录吗?是的,但我的意思是“下一条”字不重要,您所做的是查找特定的行,因此在ID=LastIDRead和passig LastIDRead asn当前ID+1的情况下执行同样的操作+1的问题是当存在间隙时(例如,已删除的记录)