[SQL Server]幾種分頁(Paging)
来源:互联网 发布:计算机硬件工程师知乎 编辑:程序博客网 时间:2024/05/17 18:26
以下介紹幾種在SQL Server上簡單的分頁做法,大致分為三種:
1.Order By搭配not in
2.Temp Table
3.ROW_NUMBER() function
以下以Northwind資料庫作為範例:
Order By搭配not in
1
Select
Top
10 CustomerID, CompanyName ,ContactName, Country
from
Customers
where
CustomerID
Not
in
2
(
Select
top
10 CustomerID
from
Customers
order
by
CustomerID)
3
Order
by
CustomerID
此做法是透過Where條件中的not in排除掉前十筆資料,以下是前20筆資料:
not in會幫忙排除掉CustomerID為1-10筆的內容,因此我們可以Select到11-20筆的資料結果:
Temp Table
1
select identity(
int
,1,1) RowNum, CustomerID, CompanyName, ContactName, Country into TempTable from Customers
將Select出來的欄位資料放到另一個Temp Table中,該Temp Table的第一個欄位是identity,為自動遞增的欄位,接著我們可對該Temp Table的RowNum(identity欄位)進行條件過濾;
1
Select
*
from
Temp
where
RowNum >= 11
AND
RowNum <= 20
由於第一個欄位是自動遞增,我們就可以將它當成是我們所要的RowNum來進行查詢,得到的資料如下:
ROW_NUMBER() Function
這個功能是在SQL Server 2005後的版本才有提供的,我們可透過以下的語法來進行處理:
1
SELECT
*
2
FROM
(
SELECT
ROW_NUMBER() OVER (
ORDER
BY
CustomerID)
3
AS
RowNum, CustomerID, CompanyName, ContactName, Country
FROM
Customers)
4
AS
NewTable
5
WHERE
RowNum >= 11
AND
RowNum <= 20
Select 出來的資料如下:
在管理便利性上,我個人比較不傾向選擇Temp Table的方式,1.3兩種做法是我比較會去使用的,而如果可以選擇的話我應該會以ROW_NUMBER()這個Function的解法優先,我們以這兩句SQL的執行計畫中來看就可以看出使用ROW_NUMBER()的執行成本是較低的,主要差異應在於ROW_NUMBER()只做了一次的Clustered Index Scan,而另一個方法則是兩次:
參考資料:
MSDN ROW_NUMBER(Transact-SQL)
address: http://www.dotblogs.com.tw/jimmyyu/archive/2009/11/09/11499.aspx
- [SQL Server]幾種分頁(Paging)
- 分页(Paging) / SQL Server / Oracle
- 分页(Paging) / SQL Server / Oracle
- 分页(Paging) / SQL Server / Oracle
- 分页(Paging) / SQL Server / Oracle
- SQL SERVER 分页(Paging a Query with SQL Server)
- Custom Paging in ASP.NET 2.0 with SQL Server 2005
- SQL Server 2005 Paging – The Holy Grail
- My Paging SQL
- More with SQL Server 2005 : Top n Per Group, Paging, and Common Table Expressions
- Stored procedures to implement paging for large tables or queries in SQL Server 2005 and SQL Server 2008
- paging
- paging
- ListVew,DataPager,LinqDataSource 实现Server Side Paging
- Telerik Grid Server Side Paging, Sorting and Filtering
- Server-Side Paging with the Entity Framework and ASP.NET MVC 3
- jsp Paging
- Paging Component
- 登录的jdbc后台程序
- Spring 3.2.0 First Thing-1
- IOS BLOCK
- 七夕·殇
- 时间戳
- [SQL Server]幾種分頁(Paging)
- viewflow实现类似淘宝,网易新闻的横幅banner,可循环自动播放
- android的 makefile里 的常用 宏定义
- Matlb矩阵操作
- 浮华落寂
- sessionfactory 静态代码
- Android JNI知识简介
- 婚纱照和结婚用的相机都是日货...
- android字符串显示的宽度