婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SqlServer 2005 T-SQL Query 學習筆記(3)

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

熱門標簽:中國地圖標注省份用什么符號 電話機器人錄音師薪資 智能電銷機器人教育 高德地圖標注電話怎么沒了 北京智能外呼系統供應商家 孝感銷售電銷機器人廠家 江西穩定外呼系統供應商 無錫梁溪公司怎樣申請400電話 奧維地圖標注字體大小修改

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;
您可能感興趣的文章:
  • SQLServer用t-sql命令批量刪除數據庫中指定表(游標循環刪除)
  • 如何在SQL Server 2008下輕松調試T-SQL語句和存儲過程
  • SQL Server中的T-SQL的基本對象
  • SqlServer 2005 T-SQL Query 學習筆記(4)
  • SqlServer 2005 T-SQL Query 學習筆記(2)
  • SqlServer 2005 T-SQL Query 學習筆記(1)
  • SQLServer 2008 新增T-SQL 簡寫語法
  • SQL Server 數據庫管理常用的SQL和T-SQL語句
  • SQL Server 數據庫管理常用的SQL和T-SQL語句
  • SQL Server 數據庫管理常用的SQL和T-SQL語句
  • T-sql語句修改SQL Server數據庫邏輯名、數據庫名、物理名的方法

標簽:荊州 海北 通化 臨滄 泰州 那曲 阜陽 齊齊哈爾

巨人網絡通訊聲明:本文標題《SqlServer 2005 T-SQL Query 學習筆記(3)》,本文關鍵詞  SqlServer,2005,T-SQL,Query,學習,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SqlServer 2005 T-SQL Query 學習筆記(3)》相關的同類信息!
  • 本頁收集關于SqlServer 2005 T-SQL Query 學習筆記(3)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 河东区| 连城县| 台州市| 肇东市| 勐海县| 平邑县| 内丘县| 泸西县| 武夷山市| 邯郸县| 晋城| 河池市| 扬中市| 蒙城县| 织金县| 厦门市| 永新县| 永昌县| 米脂县| 杨浦区| 和平区| 建宁县| 平陆县| 三穗县| 桓仁| 武川县| 渝北区| 阿合奇县| 九台市| 喀什市| 锡林郭勒盟| 兴安盟| 轮台县| 重庆市| 云霄县| 昔阳县| 桐乡市| 景谷| 延长县| 上思县| 潜江市|