SQL SERVER2012新分页方式 轉載

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

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

use mastergoset nocount ongoset showplan_text ongo

--2012的OFFSET分页方式 select number from spt_valueswhere 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 15order by number ascgo

--2000的TOP分页方式 select number from (select top 5 number from (select top 15 number from spt_values where type='p' order by number asc) torder by number desc) t order by number ascgoset showplan_text offgo

从查询计划来看,2012的查询计划中,offset直接操作了top迭代器,分页计划十分简单,看起来也比后两种简单明了。

而在系统预估的查询开销中,OFFSET占9%,ROW_NUMBER占45%,TOP占47%(加起来101% -_-||),OFFSET占了绝对的优势。

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航