三種分頁方式

2021-05-25 20:15:17 字數 1336 閱讀 8643

1.分頁方案一:(利用not in和select top分頁)

語句形式:

selecttop10*fromtesttablewhere(idnotin     (selecttop20id    fromtesttable    orderbyid))orderbyidselecttop頁大小*fromtesttablewhere(idnotin     (selecttop頁大小*頁數id    from表    orderbyid))orderbyid

2.分頁方案二:(利用id大於多少和select top分頁)

語句形式:

selecttop10*fromtesttablewhere(id>     (selectmax(id)    from(selecttop20id        fromtesttable        orderbyid)ast))orderbyidselecttop頁大小*fromtesttablewhere(id>     (selectmax(id)    from(selecttop頁大小*頁數id        from表        orderbyid)ast))orderbyid

3.分頁方案三:(利用sql的游標儲存過程分頁)

create 

proceduresqlpager@sqlstrnvarchar(4000),--查詢字串@currentpageint,--第n頁@pagesizeint--每頁行數

assetnocountondeclare@p1int,--p1是游標的

id@rowcountintexecsp_cursoropen@p1output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcountoutputselectceiling(1.0*@rowcount/@pagesize)as總頁數--,@rowcountas總行數,@currentpageas當前頁

set@currentpage=(@currentpage-1)*@pagesize+1execsp_cursorfetch@p1,16,@currentpage,@pagesizeexecsp_cursorclose@p1setnocountoff

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

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

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

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

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

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

sql三種分頁方式

表中主鍵必須為標識列,id int identity 1,1 1.分頁方案一 利用not in和select top分頁 語句形式 select top 10 from testtable where id not in select top 20 id from testtable order b...

Elasticsearch 三種分頁方式

淺 分頁可以理解為簡單意義上的分頁。它的原理很簡單,就是查詢前20條資料,然後截斷前10條,只返回10 20的資料。這樣其實白白浪費了前10條的查詢。get test dev search size 10,from 20,sort id 其中,from定義了目標資料的偏移值,size定義當前返回的數...

Oracle分頁查詢三種方式

1.根據rowid來分 select from t xiaoxi where rowid in select rid from select rownum rn,rid from select rowid rid,cid from t xiaoxi order by cid desc where r...