激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - SqlServer 2005 T-SQL Query 學習筆記(3)

SqlServer 2005 T-SQL Query 學習筆記(3)

2020-06-30 14:48服務器之家 Sql Server

SqlServer 2005 T-SQL Query 學習筆記(3),有需要的朋友可以參考一下。

AD HOC PAGING

就是指用頁面的序號和頁面的大小請求一個單獨的頁面。下面是例子。

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行(2*5),也就是說,查看N頁的話,SQL只查到N的頁的數據,N頁后面的數據一概不查看。
 
另外,每當移動一頁,都會把這頁放進緩存里,因此每次查詢,就是邏輯查詢(緩存)+物理查詢的過程。物理查詢只需要查詢新請求的頁即可,其他全部在緩存里執行,這樣大大加快了查詢速度。
 
 

MULTIPAGE ACCESS:

如果結果集不是很大,而且分了多個請求頁面,請求也不向前移動,那么這是一個好的方案:首先在一個表里使用ROW_NUMBER具體化所有的頁,然后創建一個群集索引。下面是例子。

 

首先創建按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;

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 污污的视频在线观看 | 久久精热 | 亚洲精品成人18久久久久 | 黄色7777| 成人啪啪色婷婷久 | 91精品国产九九九久久久亚洲 | 成人毛片在线播放 | 久久国产精品久久精品国产演员表 | 久久草在线视频 | 天天碰天天操 | 国产亚洲精品久久久久久久久 | 欧美在线日韩 | 毛片免费观看完整版 | 视频一区二区三区在线播放 | 欧美日韩免费一区 | 日韩aⅴ一区二区三区 | 91精品国产网站 | 欧洲亚洲激情 | 欧美亚洲免费 | 中国黄色一级生活片 | 99影视电影电视剧在线播放 | 欧美特黄视频 | 欧美日韩在线中文字幕 | 夜班护士在线观看 | 欧美视频网 | 国产99久久久国产精品下药 | 久久精品中文字幕一区二区三区 | 日本成人二区 | 日本在线播放一区二区 | 亚洲第一成人久久网站 | 成年人免费视频大全 | 国产一级性生活视频 | 精品免费国产一区二区三区 | av电影免费观看 | 调教小男生抽打尿孔嗯啊视频 | 亚洲午夜天堂吃瓜在线 | 国产精品久久久av | 亚洲午夜天堂吃瓜在线 | 日本黄色免费片 | 黄色片视频免费观看 | 久毛片|