SQL SERVER2012新分页方式 轉載

SQL SERVER2012在ORDER BY 子句中加入了新元素offset,允许用户在排序完成的结果集中自定义输出行范围,大大简化了分页SQL的书写方式和效率。

SQL SERVER2012在ORDER BY 子句中加入了新元素offset,允许用户在排序完成的结果集中自定义输出行范围,大大简化了分页SQL的书写方式和效率。以下是与以前的两种分页方式的简单对比

use master
go
set nocount on
go
set showplan_text on
go
--2012的OFFSET分页方式 select number
from spt_values
where type=‘p‘
order by number offset 10 rows fetch next 5 rows only;
go
--2005的ROW_NUMBER分页方式 select number from (
select number,row_number() over(order by number) as num from spt_values where type=‘p‘
) t where num between 11 and 15
order by number asc
go
--2000的TOP分页方式 select number from (
select top 5 number from (
select top 15 number from spt_values where type=‘p‘ order by number asc
) t
order by number desc
) t
order by number asc
go
set showplan_text off
go
从查询计划来看,2012的查询计划中,offset直接操作了top迭代器,分页计划十分简单,看起来也比后两种简单明了。
而在系统预估的查询开销中,OFFSET占9%,ROW_NUMBER占45%,TOP占47%(加起来101% -_-||),OFFSET占了绝对的优势。

在2008的更新中,我最喜欢的是MERGE,2012中就是OFFSET了。

时间: 2024-08-01 05:23:56

SQL SERVER2012新分页方式 轉載的相关文章

SQL 2012新分页方式

--2012的OFFSET分页方式 (推荐使用 - 较为方便) select number from spt_values where type='p' order by number offset 0 rows fetch next 10 rows only; go 意思是从第1条开始 取10条 --2005的ROW_NUMBER分页方式 select number from ( select number,row_number() over(order by number) as num f

SQL Server2012新特性概述

公司最近要升级数据库,SQL Server 2008R2-->2012.再开始升级之前先找了点资料分析一下2012的新特性和功能,提前预热一下. 2012中主要关注一下三个领域: 性能:改进的核心支持.列存储索.更强的压缩能力和alwayson等功能: 自助服务:借助于新的数据探索工具(如Power View),SQL Azure Bussiness Intellingence(BI).数据质量和主数据选项,以及PowerPivot for SharePoint 的改进,使用户在任何时候任何地方

SQL Server分页方式、ISNULL与COALESCE性能比较(八)

前言 上一节我们讲解了数据类型以及字符串中几个需要注意的地方,这节我们继续讲讲字符串行数同时也讲其他内容和穿插的内容,简短的内容,深入的讲解. 分页方式 在SQL 2005或者SQL 2008中我们是利用ROW_NUMBER开窗函数来进行分页的,关于开窗函数,我们在SQL进阶中会详细讲讲.如下: USE TSQL2012 GO DECLARE @StartRow INT DECLARE @EndRow INT SET @StartRow = 31 SET @EndRow = 40 SELECT

分页数据的新展示方式---瀑布流

最近老大让我做一个js效果,要求页面开始展示(比方说40条数据),当鼠标滚动到页面底部时,再加载后面的数据.开始没有半点头绪,想到过jQuery插件,但是也没怎么用起来,还是自己写吧:可以肯定的一条思路是:当滚动页面底部时,肯定是去加载下一页的数据了,这个时候页面应该没有刷新的操作,所以想到了异步Ajax. 代码部分,首先在SQL server中写了一个存储过程, ALTER proc [dbo].[proc_Nav]@pageSize int,                        

Sql Server 2012 的新分页方法分析(offset and fetch) - 转载

最近在分析 Sql Server 2012 中 offset and fetch 的新特性,发现 offset and fetch 无论语法的简洁还是功能的强大,都是相当相当不错的 其中 offset and fetch 最重要的新特性是 用来 分页,既然要分析 分页,就肯定要和之前的分页方式来比较了,特别是 Row_Number() 了,在比较过程中,发现了蛮多,不过最重要的,通过比较本质,得出了优劣,也和大家一起分享下. 准备工作,建立测试表:Article_Detail,主要是用来存放一些

SQL Server2012 T-SQL对分页的增强尝试

简介 SQL Server 2012中在Order By子句之后新增了OFFSET和FETCH子句来限制输出的行数从而达到了分页效果.相比较SQL Server 2005/2008的ROW_Number函数而言,使用OFFSET和FETCH不仅仅是从语法角度更加简单,并且拥有了更优的性能(看到很多人下过这个结论,但我测试有所偏差,暂且保留意见). MSDN上对于OFFSET和FETCH的详细描述可以在(http://msdn.microsoft.com/en-us/library/ms18838

SQL Server的三种分页方式

直接上代码 1 --top not in方式 2 select top 条数 * from tablename 3 where Id not in (select top 条数*页数 Id from tablename) 4 5 6 7 --ROW_NUMBER() OVER()方式 8 select * from ( 9 select *, ROW_NUMBER() OVER(Order by Id ) AS RowNumber from tablename 10 ) as b 11 wher

SQL Server 中的三种分页方式

USE tempdb GO SET NOCOUNT ON --创建表结构 IF OBJECT_ID(N'ClassB', N'U') IS NOT NULL DROP TABLE ClassB GO CREATE TABLE ClassB(ID INT PRIMARY KEY, Name VARCHAR(16), CreateDate DATETIME, AID INT, Status INT) CREATE INDEX IDX_CreateDate ON ClassB(CreateDate)

几种常见SQL分页方式效率比较-转

原文地址:几种常见SQL分页方式效率比较 分页很重要,面试会遇到.不妨再回顾总结一下. 1.创建测试环境,(插入100万条数据大概耗时5分钟). create database DBTestuse DBTest --创建测试表create table pagetest(id int identity(1,1) not null,col01 int null,col02 nvarchar(50) null,col03 datetime null) --1万记录集declare @i intset