資料庫全表查詢之-分頁查詢優化
我們在專案中經常會使用到分頁查詢,之前最常用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優化
- 分庫分表後的分頁查詢
- 百億級資料 分庫分表 後怎麼分頁查詢?
- 資料庫基礎查詢--單表查詢資料庫
- pgsql查詢優化之模糊查詢SQL優化
- Oracle資料庫中的分頁查詢Oracle資料庫
- MySQL 千萬資料庫深分頁查詢優化,拒絕線上故障!MySql資料庫優化
- 【資料庫】查詢優化之子連線優化資料庫優化
- 百億級資料分表後怎麼分頁查詢?
- 海量資料庫的查詢優化及分頁演算法方案(轉)資料庫優化演算法
- 效能優化之分頁查詢優化
- 如何分頁顯示資料庫查詢結果?資料庫
- 資料量很大,分頁查詢很慢,該怎麼優化?優化
- 資料庫學習筆記之查詢表資料庫筆記
- 資料庫中單表查詢資料庫
- 資料庫高階查詢之子查詢資料庫
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- Elasticsearch 分頁查詢Elasticsearch
- MySQL調優之查詢優化MySql優化
- 億萬級分庫分表後如何進行跨表分頁查詢
- 查詢資料庫表及表欄位資料庫
- 分庫資料如何查詢統計
- 分塊查詢【大規模資料查詢演算法優化】【索引順序查詢】演算法 PHP 版演算法優化索引PHP
- 查詢優化優化
- 流式查詢1. mybatis的遊標Cursor,分頁大資料查詢MyBatis大資料
- mysql資料庫查詢時用到的分頁方法有哪些MySql資料庫
- Python全棧MongoDB資料庫(資料的查詢)Python全棧MongoDB資料庫
- Python全棧 MongoDB 資料庫(資料的查詢)Python全棧MongoDB資料庫
- MySQL資料庫基礎——多表查詢:子查詢MySql資料庫
- 20240719資料庫關聯查詢、條件查詢資料庫
- Laravel Passport OAuth 資料庫查詢改快取優化LaravelPassportOAuth資料庫快取優化
- Jemter查詢資料庫資料庫