1. 程式人生 > >MySQL 分頁優化

MySQL 分頁優化

明顯 並不是 sql log family soft blog offset device

MySQL 用 LIMIT offset, length 進行分頁。但當表記錄數很大,會發現大頁數的查詢時間明顯比小頁數的查詢時間大。

MySQL並不是跳過 offset 行,而是取 offset+N 行,然後返回放棄前 offset 行,返回 N 行,當 offset 特別大的時候,效率就非常的低下

解決方式一:在業務上限制總頁數。

解決方式二:借助索引,快速定位。

方式二是比較常用的。

示例:device_version_stat 表記錄數很大,如果需要把該表的數據導出到 excel ,後面的數據查詢會相對慢。如果是按 id 降序,可以借助 id 主鍵先快速定位到查詢範圍,

第一頁的 maxId = null,第二頁的 maxId = 具體的某個值1,第二頁的 maxId = 具體的某個值2,...

在查詢時帶上以下條件,查詢效率就會高很多,

<if test="@Ognl@isNotEmpty(minId)">
AND id > #{minId}
</if>
<if test="@Ognl@isNotEmpty(maxId)">
AND id &lt; #{maxId}
</if>

MySQL 分頁優化