文档详情

Oracle_MySql_SQLServer数据分页查询.docx

发布:2017-02-04约2.03千字共4页下载文档
文本预览下载声明
[SQL Server]几种分页(Paging)写法以下介绍几种在SQL Server上简单的分页做法,大致分为三种:1.Order By搭配not in2.Temp Table3.ROW_NUMBER() function以下以Northwind数据库作为范例:Order By搭配not inSelect Top 10 CustomerID, CompanyName ,ContactName, Country from Customers where CustomerID Not in(Select top 10 CustomerID from Customers order by CustomerID)Order by CustomerID此做法是透过Where条件中的not in排除掉前十笔资料,以下是前20笔资料:?not in会帮忙排除掉CustomerID为1-10笔的内容,因此我们可以Select到11-20笔的数据结果:Temp TableSelect identity(int,1,1) RowNum, CustomerID, CompanyName, ContactName, Country into TempTable from Customers将Select出来的字段数据放到另一个Temp Table中,该Temp Table的第一个字段是identity,为自动递增的字段,接着我们可对该Temp Table RowNum(identity字段)进行条件过滤;Select * from Temp where RowNum = 11 AND RowNum = 20由于第一个字段是自动递增,我们就可以将它当成是我们所要的RowNum来进行查询,得到的数据如下:ROW_NUMBER() Function这个功能是在SQL Server 2005后的版本才有提供的,我们可透过以下的语法来进行处理:SELECT *FROM (SELECT ROW_NUMBER() OVER (ORDER BY CustomerID)AS RowNum, CustomerID, CompanyName, ContactName, Country FROM Customers)AS NewTableWHERE RowNum = 11 AND RowNum = 20Select 出来的资料如下:[MySQL]的Paging写法mysql分页直接使用limit进行操作,下面介绍mysql分页实例与分页性能优化。最常见MYSQL最基本的分页方式:Select * from content order by id desc limit 0, 10在中小数据量的情况下,这样的SQL足够。随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:Select * from content order by id desc limit 10000, 10越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。[Oracle]的Paging写法Oracle分分页查询格式:SELECT * FROM(SELECT A.*, ROWNUM RNFROM (SELECT * FROM TABLE_NAME) AWHERE ROWNUM = 40)WHERE RN = 21最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM = 40和RN = 21控制分页查询的每页的范围。以上的Oracle分页查询语句拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM = 40这句上。选择第21到40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWNUM = 40来控制最大值,在查询的最外层控制最小值。而另一种方式是去掉查询第二层的WHERE ROWNUM = 40语句,在查询的最外层控制分页的最小值和最大值。查询语句如下:SELECT * FROM(SELECT A.*, ROWNUM RNFROM (SELECT * FROM TABLE_NAME) A)WHERE RN BETWEEN 21 AND 40对比这两种写法,绝大多数的情况下,第一个查询的效率比第二个高得多。而第二个查询语句的查询条件BETWEEN 21 AND 40是存在于查询的第三层。因此,对于第二个查询语句,Oracle最内层返回给中介层的是所有满足条件的数据,而中介层返回给最外层的也是所有数据。数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。 上面分析的查询不仅仅是针对单表的简单查询,对于最内层查询是复杂的多表联合查询或
显示全部
相似文档