SQL SERVER2012新分页方式
来源:互联网 发布:image lab软件下载 编辑:程序博客网 时间:2024/05/19 13:23
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
/*
StmtText
----------------------------------------------------------------------------------------------------------
select number
from spt_values
where type='p'
order by number offset 10 rows fetch next 5 rows only;
StmtText
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Top(OFFSET EXPRESSION:((10)),TOP EXPRESSION:((5)))
|--Index Scan(OBJECT:([mssqlsystemresource].[sys].[spt_values].[ix2_spt_values_nu_nc]), WHERE:(CONVERT(nchar(3),[mssqlsystemresource].[sys].[spt_values].[type],0)=N'p') ORDERED FORWARD)
StmtText
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
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
StmtText
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Sort(ORDER BY:([mssqlsystemresource].[sys].[spt_values].[number] ASC))
|--Filter(WHERE:([Expr1005]>=(11) AND [Expr1005]<=(15)))
|--Top(TOP EXPRESSION:(CASE WHEN (15) IS NULL OR (15)<(0) THEN (0) ELSE (15) END))
|--Sequence Project(DEFINE:([Expr1005]=row_number))
|--Segment
|--Index Scan(OBJECT:([mssqlsystemresource].[sys].[spt_values].[ix2_spt_values_nu_nc]), WHERE:(CONVERT(nchar(3),[mssqlsystemresource].[sys].[spt_values].[type],0)=N'p') ORDERED FORWARD)
StmtText
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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
StmtText
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Sort(ORDER BY:([mssqlsystemresource].[sys].[spt_values].[number] ASC))
|--Sort(TOP 5, ORDER BY:([mssqlsystemresource].[sys].[spt_values].[number] DESC))
|--Top(TOP EXPRESSION:((15)))
|--Index Scan(OBJECT:([mssqlsystemresource].[sys].[spt_values].[ix2_spt_values_nu_nc]), WHERE:(CONVERT(nchar(3),[mssqlsystemresource].[sys].[spt_values].[type],0)=N'p') ORDERED FORWARD)
*/
从查询计划来看,2012的查询计划中,offset直接操作了top迭代器,分页计划十分简单,看起来也比后两种简单明了。
而在系统预估的查询开销中,OFFSET占9%,ROW_NUMBER占45%,TOP占47%(加起来101% -_-||),OFFSET占了绝对的优势。
在2008的更新中,我最喜欢的是MERGE,2012中就是OFFSET了。
- SQL SERVER2012新分页方式
- SQL SERVER2012新分页方式
- SQL SERVER2012新分页方式
- SQL SERVER2012新功能之新分页语法
- SQL Server2012新特性:OFFSET, FETCH 分页
- hibernate5+sql server2012 分页异常
- hibernate5+sql server2012 分页异常
- SQL Server2012 新特性: THROW
- SQL Server2012新特性WITH RESULT SETS
- SQL Server2012新特性: 包含数据库
- SQL Server2012新特性:新增内置函数
- sql server 2012新分页方式
- SQL Server2012 T-SQL对分页的增强尝试
- SQL Server2012 T-SQL对分页的增强尝试
- 数据库SQL Server2012笔记(四)——多表查询、子查询、分页查询、用查询结果创建新表和外连接
- [C#] VS2012连接SQL Server2012数据库的连接方式
- sql server2012 功能
- Sql server2012远程连接
- Git服务器搭建及SSH无密码登录设置
- git使用详细介绍
- Spring
- js 闭包 问题
- Image不同加载方式对内存的影响
- SQL SERVER2012新分页方式
- flex4基于datGroup自定义布局实例
- xenpaging流程详解(2)
- 9i10g11g编程艺术——分区
- Android Service 完全解析
- 我的首个win8app开发(javascript&html)(一)
- android中的所有activity间动画跳转
- strcpy sprintf memcpy 异同
- SQL2008 SQL Server 代理服务提供的凭据无效