求sql”高效“分页及其原理
如题:以前我的分页都是用的select top 10 * from 表 where id not in (select top 10 id from 表)这种方式来分的页,今天我一个同事突然看见提醒我如果有几千几万条数据 那执行时会先把子查询中所有的id查出来 这样性能不是很好 我列了几个分页方法:
1 采用top 方法分页
2 采用row_number方式
3 这是我同事的方式(c#代码): SqlDataAdapter adapter = new SqlDataAdapter(command, conn);
adapter.Fill(ds, index, pageSize, "ds"); (个人觉得这个方法应该和2方法最后执行原理一样)
请大家说哈sql查询语句的执行顺序 :
比如select * from (select row_number() over(order by getdate()) as i,* from 表 where i between 10 and 20)
where条件是在所有的数据筛选完了再进行选择的吗 那样效率肯定低了