SqlServer 2005 T-SQL Query 学习笔记(3)
网络编程 2021-07-05 16:33www.168986.cn编程入门
利用ROW_NUMBER()进行高效率的分页。
AD HOC PAGING
就是指用页面的序号和页面的大小请求一个单独的页面。狼蚁网站SEO优化是例子。
DECLARE @pagesize AS INT, @pagenum AS INT; SET @pagesize = 5; SET @pagenum = 2; WITH SalesCTE AS ( SELECT ROW_NUMBER() OVER(ORDER BY qty, empid) AS rownum, empid, mgrid, qty FROM dbo.Sales ) SELECT rownum, empid, mgrid, qty FROM SalesCTE WHERE rownum > @pagesize (@pagenum-1) AND rownum <= @pagesize @pagenum ORDER BY rownum;
说明在上个例子中,其实SQL只审视了10行(25),也就是说,查看N页的话,SQL只查到N的页的数据,N页后面的数据一概不查看。
,每当移动一页,都会把这页放进缓存里,每次查询,就是逻辑查询(缓存)+物理查询的过程。物理查询只需要查询新请求的页即可,其他全部在缓存里执行,这样大大加快了查询速度。
MULTIPAGE ACCESS
如果结果集不是很大,而且分了多个请求页面,请求也不向前移动,那么这是一个好的方案在一个表里使用ROW_NUMBER具体化所有的页,然后创建一个群集索引。狼蚁网站SEO优化是例子。
创建按ROW_NUMBER把列编好,
SELECT ROW_NUMBER() OVER(ORDER BY qty, empid) AS rownum, empid, mgrid, qty INTO #SalesRN FROM dbo.Sales; CREATE UNIQUE CLUSTERED INDEX idx_rn ON #SalesRN(rownum);
然后直接按ROWNUM查询,
DECLARE @pagesize AS INT, @pagenum AS INT; SET @pagesize = 5; SET @pagenum = 2; SELECT rownum, empid, mgrid, qty FROM #SalesRN WHERE rownum BETWEEN @pagesize (@pagenum-1) + 1 AND @pagesize @pagenum ORDER BY rownum;
RANK & DENSE RANK
这2个函数和ROW_NUMBER的区别是ROW_NUMBER在ORDER BY的条件里有重复行存在的话,是把这些重复行也按INDEX排列的,RANK和DENSE RANK总是确定的,即只要是ORDER BY重复的行,他们是统一INDEX的。
RANK和DENSE_RANK的区别是,RANK是如果上级的INDEX和下级的INDEX有可能不是+1关系,是按下级真正处于列里的位置进行INDEX,而DENSE_RANK是按照跟上级的INDEX+1的关系进行的编码。
比如
SELECT empid, qty, RANK() OVER(ORDER BY qty) AS rnk, DENSE_RANK() OVER(ORDER BY qty) AS drnk FROM dbo.Sales ORDER BY qty;
NTILE
NTILE的用法和其他的RANK函数一样,只不过它可以传入一个参数,用来决定最大的INDEX是多少它会按行数进行除法,然后平均分配行数进行INDEX的标示。
比如,如果有11列,那么11/3=3,3列一组作为一个INDEX,然后,11%3=2,这2列会分别加在前面的2组上。
比如,
SELECT empid, qty, CASE NTILE(3) OVER(ORDER BY qty, empid) WHEN 1 THEN 'low' WHEN 2 THEN 'medium' WHEN 3 THEN 'high' END AS lvl FROM dbo.Sales ORDER BY qty, empid;
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程