三種SQL分頁方式
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 ),--查詢字串@currentpageint,--第N頁@pagesizeint--每頁行數是遊標的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的遊標儲存過程分頁) 效率最差,但是最為通用
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-629331/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java中Elasticsearch 實現分頁方式(三種方式)JavaElasticsearch
- MySql、SqlServer、Oracle 三種資料庫查詢分頁方式MySqlServerOracle資料庫
- 基於Sql server資料庫的四種分頁方式總結SQLServer資料庫
- Oralce 分頁 三種實現
- SSH整合實現分頁查詢(兩種方式)
- 常用3種資料庫的Sql分頁資料庫SQL
- 線上直播原始碼,java資料分頁幾種方式原始碼Java
- 【SQL 效能優化】表的三種連線方式SQL優化
- Java專案開發中實現分頁的三種方式一篇包會Java
- UIImageView三種方式UIView
- 直播軟體原始碼,java資料分頁幾種方式原始碼Java
- 【SQL 效能最佳化】表的三種連線方式SQL
- 三種方式使用純 CSS 實現星級評分CSS
- SQL Server資料庫中分頁編號的另一種方式SQLServer資料庫
- 三種繼承方式繼承
- SQL資料分頁SQL
- SQL分頁語句SQL
- 分頁procedure (SQL Server)SQLServer
- Linq to sql 分頁SQL
- 盤點現在用的SqlServer 5種分頁方式和拉姆達表示式分頁,進來看看吧。SQLServer
- MyBatis實現分頁的方式MyBatis
- node 除錯三種方式除錯
- HTTP三種快取方式HTTP快取
- Mybatis批量更新三種方式MyBatis
- JavaScript的三種引入方式JavaScript
- mysql 啟停三種方式MySql
- flowable 三種方式部署流程
- Hive metastore三種配置方式HiveAST
- 三種方式實現平滑滾動頁面到頂部的功能
- 【SQL】表連線七種方式SQL
- LVS:三種負載均衡方式比較+另三種負載均衡方式負載
- Oracle分頁(limit方式的運用)OracleMIT
- 分頁列表框架(三)框架
- Python|讀、寫Excel檔案(三種模組三種方式)PythonExcel
- WiFi攻擊的三種方式WiFi
- flowable 部署流程的三種方式
- Flutter 三種JSON解析方式FlutterJSON
- Flutter 解析JSON 三種方式FlutterJSON