目前,这个 sql 查询能够在我确定的行之间进行选择。但是有没有更好的方法呢?
select * from (select *, ROW_NUMBER() over (order by Id desc) as RowId
from tblUsersMessages ) dt
where RowId between 10 and 25
目前,这个 sql 查询能够在我确定的行之间进行选择。但是有没有更好的方法呢?
select * from (select *, ROW_NUMBER() over (order by Id desc) as RowId
from tblUsersMessages ) dt
where RowId between 10 and 25
取决于你的索引。
有时这可能会更好
SELECT *
FROM tblUsersMessages
WHERE Id IN (SELECT Id
FROM (select Id,
ROW_NUMBER() over (order by Id desc) as RowId
from tblUsersMessages) dt
WHERE RowId between 10 and 25)
如果存在可用于快速查找Id
范围内的值的较窄索引。有关演示可能出现的问题类型的示例,请参见我的答案here 。
您需要检查SET STATISTICS IO ON
特定案例的执行计划和输出。