sql server row_number分页】的更多相关文章

row_number分页 SELECT  TOP 10* --pageSize =10FROM (  SELECT    *, row_number () OVER (ORDER BY a.bsqID ASC) AS number FROM  TB_RT_BSQDATA a ) AS tableNumberWHERE number > 0*10 --pageIndex = 0, pageSize =10 --先把表中的所有数据都按照一个number进行排序,  --然后查询number大于pag…
数据库分页是老生常谈的问题了.如果使用ORM框架,再使用LINQ的话,一个Skip和Take就可以搞定.但是有时由于限制,需要使用存储过程来实现.在SQLServer中使用存储过程实现分页的已经有很多方法了.之前在面试中遇到过这一问题,问如何高效实现数据库分页.刚好上周在业务中也遇到了这个需求,所以在这里简单记录和分享一下. 一 需求 这里以SQLServer的示例数据库NorthWind为例,里面有一张Product表,现在假设我们的需求是要以UnitPrice降序排列,并且分页,每一页10条…
Hibernate 可以实现分页查询 如下 Query q = session.createQuery("from Cat as c"); q.setFirstResult(10000); q.setMaxResults(20); List l = q.list(); 生成的sql 语句为 select top 10000 .... from Cat as c 分析:Hibernate 获取到 10000条记录过后再筛选出符合条件的20条记录. 再来看看Hibernate 的 dial…
最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerProfiler把语句抓取了上来. 用ROW_NUMBER()进行分页 我们看看现场抓上来的分页语句: select top 20 a.*,ag.Name as AgentServerName,,d.Name as MgrObjTypeName,l.UserName as userName from…
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM student LIMIT (PageNo ) * PageSize,PageSize; 理解:(Limit n,m)  =>从第n行开始取m条记录,n从0开始算. 2.Oracel的分页查询: SELECT * FROM ( SELECT ROWNUM rn ,* FROM student WHER…
今天无聊和朋友讨论分页,发现网上好多都是错的.网上经常查到的那个Top Not in 或者Max 大部分都不实用,很多都忽略了Order和性能问题.为此上网查了查,顺带把2000和2012版本的也补上了. 先说说网上常见SQL的错误或者说局限问题 select top 10 * from table1 where id not in( select top 开始的位置 id from table1) 这样的确是可以取到分页数据,但是这是默认排序的,如果要按其中一列排序呢?那order by 加在…
每每面试,总会有公司问到分页.在下不才,在这里写几种分页,望路过的各位大神尽情拍砖. 先从创建数据库说起.源码如下 一.创建数据库 /********************************************************************** 一.创建数据库DBTest @author: Alex Tian Create Date: 2014-03-19 *******************************************************…
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: 1 SELECT 2 * 3 FROM 4 student 5 LIMIT (PageNo - 1) * PageSize,PageSize; 理解:(Limit n,m)  =>从第n行开始取m条记录,n从0开始算. 2.Oracel的分页查询: 1 SELECT 2 * 3 FROM 4 ( 5 SELECT 6 S.*,…
发现网上好多都是错的.网上经常查到的那个Top Not in 或者Max 大部分都不实用,很多都忽略了Order和性能问题.为此上网查了查,顺带把2000和2012版本的也补上了. 先说说网上常见SQL的错误或者说局限问题 1 2 3 4 5 select top 10 * from table1 where id not in(     select top 开始的位置 id     from table1) 这样的确是可以取到分页数据,但是这是默认排序的,如果要按其中一列排序呢?那order…
最近学习了一下SQL的分页查询,总结了以下几种方法. 首先建立了一个表,随意插入的一些测试数据,表结构和数据如下图: 现在假设我们要做的是每页5条数据,而现在我们要取第三页的数据.(数据太少,就每页5条了) 方法一: * from [StuDB].[dbo].[ScoreInfo] where [SID] not in ( [SID] from [StuDB].[dbo].[ScoreInfo] order by [SID]) order by [SID] 结果: 此方法是先取出前10条的SID…