邏輯分頁與物理分頁的區別


1.物理分頁

物理分頁就是數據庫本身提供了分頁方式,如MySQL的limit,oracle的rownum ,好處是效率高,不好的地方就是不同數據庫有不同的搞法。

2.邏輯分頁

邏輯分頁利用游標分頁,好處是所有數據庫都統一,壞處就是效率低。

3.常用ORM框架采用的分頁技術

①:hibernate采用的是物理分頁;

②:MyBatis使用RowBounds實現的分頁是邏輯分頁,也就是先把數據記錄全部查詢出來,然在再根據offset和limit截斷記錄返回(數據量大的時候會造成內存溢出),不過可以用插件或其他方式能達到物理分頁效果。

 

 mybatis的物理分頁插件:

常見的兩種: Mybatis-Paginator Mybatis-PageHelper

   為了在數據庫層面上實現物理分頁,又不改變原來MyBatis的函數邏輯,可以編寫plugin截獲MyBatis Executor的statementhandler,重寫SQL來執行查詢

分頁結論:
1.物理分頁速度上並不一定快於邏輯分頁,邏輯分頁速度上也並不一定快於物理分頁。
2.物理分頁總是優於邏輯分頁:沒有必要將屬於數據庫端的壓力加諸到應用端來,就算速度上存在優勢,然而其它性能上的優點足以彌補這個缺點。
3.在分頁工作前,有必要了解使用數據庫本身的一些sql語句特點更好的分頁


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM