應該怎麼分頁?
我忘記我是不是寫過了,如果寫過就跳過吧。為什麼寫這個,以前出過幾次問題,我發現分頁寫的有問題。很多人不是太明白。我這裡列舉一下:
A場景: select * from t where rownum<10 或者 limit 10 或者用fetch first 10 rows only;
這種場景:不管表中資料量是TB級別還是PB級別,查詢KB返回KB。
B場景: select count(*) from t
這種場景:不管資料量是TB級別還是PB級別,查詢TB或者PB,返回KB。
然後說明一下A場景 Select count(*)from t;基本記憶體查詢可能涉及少量磁碟查詢,返回byte或者KB。他的 效率不等於 B場景 select * from t; 基本是磁碟查詢,返回MB甚至GB。這是成千上萬倍的差異。
C場景 Select count(*)from t; 效率不等於 select count(1) from (select * from t;) 等於2個B場景(一個應用SQL一個框架SQL)
D場景 Select count(*)from t; 效率更加不等於 select count(1) from (select * from t 複雜查詢加排序;) 等於2個B場景(一個應用SQL一個框架SQL)
而我們在日常工作中C和D是日常最大的問題也是最常見的。都是甩鍋給框架,框架說沒人逼著你用啊?
那遇到CD兩種場景怎麼做?
1、SQL寫的好點,確保SQL在毫秒級別完成;(單機上億也做得到,做不到的先最佳化設計和SQL)
2、SQL不好改的話,就簡單分頁不要總頁數。就直接limit的一次次去往下找。
在PC網際網路時代是輸入框為入庫比如百度,谷歌。他們沒有總頁數,但是就是可以往下找。
在移動網際網路時代,就是手指滑動了,也沒有總頁數。比如微博、朋友圈,也是沒有總頁數,往下滑。
只有資料量較小的場景(比如郵箱)才需要總頁數。那麼可以結合自己情況選擇要不要總頁數。強烈推薦不要總頁數,就一頁一頁往下走,這才符合網際網路場景,除非你不是面向網際網路應用的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2909805/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料量很大,分頁查詢很慢,該怎麼優化?優化
- 一對多分頁的SQL到底應該怎麼寫?SQL
- 重度、中度、輕度?遊戲到底應該怎麼分?遊戲
- 分庫分表系列: 到底該怎麼拆分?
- Git Commit Message 應該怎麼寫?GitMIT
- 都說軟體架構要分層、分模組,具體應該怎麼做(二)架構
- 海量資料的分頁怎麼破?
- 測試應該怎麼學 Java 呢Java
- 網頁抓取選擇代理應該考慮什麼?網頁
- 應屆生職場規劃應該怎麼做?
- 百億級資料分表後怎麼分頁查詢?
- 百億級資料 分庫分表 後怎麼分頁查詢?
- 用人工智慧,應該怎麼掏錢?人工智慧
- 小程式的ui應該怎麼設計?UI
- 新站SEO推廣應該怎麼做呢?
- 關於bug,測試應該怎麼提
- Web前端到底需要學什麼?應該怎麼學?Web前端
- 網頁伺服器無響應怎麼回事?怎麼辦?網頁伺服器
- 多端融合,3D畫面,未來的頁遊市場到底應該怎麼闖?3D
- http代理IP的供應商應該怎麼選擇HTTP
- 資料探勘和資料提取該怎麼區分?
- Redis中雜湊分佈不均勻該怎麼辦Redis
- 五分鐘自學程式設計:計算機網路到底應該怎麼學?!程式設計計算機網路
- 頁面劫持,頁面劫持,如果被頁面劫持了該怎麼去解決,方法分享
- 介面響應錯誤碼應該怎麼設計?ChatGPT這麼說ChatGPT
- PHP的就業前景怎麼樣?PHP小白應該怎麼學習?PHP就業
- 寫簡歷應該怎麼準備專案
- 2024年遊戲買量應該怎麼玩?遊戲
- 代理應該怎麼選?代理型別先弄清型別
- 面對變革,我們應該怎麼做?
- 零基礎學Java應該怎麼學?Java
- 個人雲主機應該怎麼選擇
- 教師職稱論文應該怎麼寫?
- 新手應該怎麼選擇VPS伺服器伺服器
- 該怎麼做事?
- 牆面互動投影應用到展館應該怎麼做
- excel表格分頁怎麼重複表頭 excel表怎樣讓每頁都有表頭Excel
- 商城網站測試報告應該怎麼寫網站測試報告