SQL分頁語句

2021-09-06 11:53:38 字數 1413 閱讀 4088

** 

有關分頁 sql 的資料很多,有的使用儲存過程,有的使用游標。本人不喜歡使用游標,我覺得它耗資、效率低;使用儲存過程是個不錯的選擇,因為儲存過程是經過預編譯的,執行效率高,也更靈活。先看看單條 sql 語句的分頁 sql 吧。

方法1:

適用於 sql server 2000/2005

select

top頁大小 

* from

table1

where

id not

in (

select

top頁大小

* (頁數

- 1

) id 

from

table1 

order

byid

)order

byid

方法2:

適用於 sql server 2000/2005

select

top頁大小 

* from

table1

where

id > (

select

isnull

( max

(id),

0 ) 

from

(select

top頁大小

* (頁數

- 1

) id 

from

table1 

order

byid

)  a

)order

byid

方法3:

適用於 sql server 2005

select

top頁大小 

*  

from

(select

row_number() 

over

(order

byid) 

asrownumber,

*  

from

table1

) awhere

rownumber 

>

頁大小* (頁數

- 1

) 說明,頁大小:每頁的行數;頁數:第幾頁。使用時,請把「頁大小」和「頁大小*(頁數-1)」替換成數字。

其它的方案:如果沒有主鍵,可以用臨時表,也可以用方案三做,但是效率會低。

建議優化的時候,加上主鍵和索引,查詢效率會提高。

通過sql 查詢分析器,顯示比較:我的結論是:

分頁方案二:(利用id大於多少和select top分頁)效率最高,需要拼接sql語句

分頁方案一:(利用not in和select top分頁)   效率次之,需要拼接sql語句

分頁方案三:(利用sql的游標儲存過程分頁)    效率最差,但是最為通用

** 

Sql 分頁語句

with temptb as select row number over order by id as rowid,from pagecut select from temptb where rowid between 2 50 and 2 50 50 這是乙個資料分頁方法,從sql2005起就支...

SQL分頁語句

這個分頁方法 sql分頁語句 本人對原作者的方案二做了小小的改動 原語句 select top 頁大小 from table1 where id select isnull max id 0 from select top 頁大小 頁數 1 id from table1 order by id a ...

SQL分頁語句

有關分頁 sql 的資料很多,有的使用儲存過程,有的使用游標。本人不喜歡使用游標,我覺得它耗資 效率低 使用儲存過程是個不錯的選擇,因為儲存過程是經過預編譯的,執行效率高,也更靈活。先看看單條 sql 語句的分頁 sql 吧。方法1 適用於 sql server 2000 2005 select t...