資料庫全表查詢之-分頁查詢優化
我們在專案中經常會使用到分頁查詢,之前最常用from-size模式,即“select * from tableName where is_del = 0 limit #{from},#{size} ”,剛開始資料量比較小的情況下還沒看出有什麼缺點,但是當資料量為百萬、千萬級別以上資料時,會發現分頁查詢越來越慢,會嚴重影響前端頁面的反映速度。
網上有好幾種分頁查詢優化的方法,比如:
- 使用子查詢優化;
- 使用ID限定優化;
- 使用臨時表優化;
它們從不同的角度來提升查詢速度,但是從學習和理解成本講,我還是最常用使用ID限定優化,分頁效果還是蠻好的。
使用ID限定優化
使用ID限定優化就是利用ID索引,來加快查詢速度,但是這種方式有個前提條件-假設資料庫表的ID欄位是連續遞增的;這樣我們可以根據查詢的頁數和查詢的記錄數來計算出要查詢的ID範圍,然後使用id-between-and來查詢:
select * from orders where is_del = 0 and id between 1000000 and 1000100 limit 100;
使用ID查詢能極大的優化查詢速度,基本上能在幾十毫秒之內查出指定條件的資料。只是需要明確知道資料庫表ID情況,但是一般的資料庫表都會有ID,並且ID一般都會加索引,這為資料查詢帶來很大的便利。
上述方法還有一種變形:
select * from orders where is_del = 0 and id > #{id,jdbcType=BIGINT} limit 100;
==========
個人補充 :自增ID為主鍵,主鍵索引 ;
相關文章
- 分頁查詢優化優化
- MySQL分優化之超大頁查詢MySql優化
- 資料庫查詢優化:巢狀查詢資料庫優化巢狀
- MySQL分頁查詢優化MySql優化
- MySQL——優化巢狀查詢和分頁查詢MySql優化巢狀
- 資料庫查詢優化資料庫優化
- elasticsearch查詢之大資料集分頁查詢Elasticsearch大資料
- 【資料庫】MySQL查詢優化資料庫MySql優化
- 分庫分表後的分頁查詢
- 百億級資料 分庫分表 後怎麼分頁查詢?
- 優化mysql資料字典表查詢優化MySql
- MySQL 千萬資料庫深分頁查詢優化,拒絕線上故障!MySql資料庫優化
- pgsql查詢優化之模糊查詢SQL優化
- 資料庫基礎查詢--單表查詢資料庫
- Oracle資料庫中的分頁查詢Oracle資料庫
- MongoDB之資料查詢(分頁顯示)MongoDB
- 海量資料庫的查詢優化及分頁演算法方案資料庫優化演算法
- mysql大資料量分頁查詢方法及其優化MySql大資料優化
- 【資料庫】查詢優化之子連線優化資料庫優化
- 資料庫之查詢最佳化資料庫
- mysql資料庫優化之表的設計和慢查詢定位MySql資料庫優化
- 關於分頁查詢的優化思路優化
- 一次分頁查詢的優化優化
- 優化SQL Server資料庫查詢方法優化SQLServer資料庫
- 百億級資料分表後怎麼分頁查詢?
- 海量資料庫的查詢優化及分頁演算法方案(轉)資料庫優化演算法
- Oracle分頁查詢之order byOracle
- 效能優化之分頁查詢優化
- 資料量很大,分頁查詢很慢,該怎麼優化?優化
- 如何分頁顯示資料庫查詢結果?資料庫
- 改進資料庫效能-SQL查詢優化資料庫SQL優化
- SQLServer效能優化之 nolock,大幅提升資料庫查詢效能SQLServer優化資料庫
- 資料庫中單表查詢資料庫
- 【資料庫】sql連表查詢資料庫SQL
- 查詢資料庫表是否存在資料庫
- 資料庫學習筆記之查詢表資料庫筆記
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- 資料庫資料的查詢----連線查詢資料庫