Laravel長列表分頁太慢?hammerstone/fast-paginate助你提升速度!

在使用 laravel 開發大型應用時,經常會遇到需要分頁顯示大量數據的情況。Laravel 默認的 paginate() 方法在處理小數據量時表現良好,但當數據量達到數十萬甚至數百萬級別時,性能問題就會凸顯出來。傳統的 limit 和 offset 方式在深分頁時,數據庫需要掃描大量不需要的數據,導致查詢速度急劇下降。 composer在線學習地址:學習地址 為了解決這個問題,hammerstone/fast-paginate 擴展包應運而生。它采用了一種類似于 “deferred join” 的 sql 技術,即先通過子查詢獲取分頁所需的 ID 列表,然后再根據這些 ID 獲取完整的記錄。這樣,數據庫只需要掃描少量數據,大大提高了查詢效率。

安裝 hammerstone/fast-paginate 非常簡單,只需通過 composer 即可:

composer require aaronfrancis/fast-paginate

安裝完成后,你就可以直接使用 fastPaginate() 方法代替 paginate() 了,用法完全一致:

$users = User::query()->fastPaginate(15); // 每頁顯示 15 條記錄

甚至可以在關聯關系中使用:

$posts = User::first()->posts()->fastPaginate(10);

hammerstone/fast-paginate 的優勢在于:

  • 顯著提升分頁速度: 特別是在大數據量和深分頁的情況下,性能提升非常明顯。
  • 使用簡單: 無需修改現有代碼,只需將 paginate() 替換為 fastPaginate() 即可。
  • 支持關聯關系: 可以在關聯關系上直接使用 fastPaginate() 進行分頁。

實際應用效果:

許多開發者已經通過 hammerstone/fast-paginate 解決了 Laravel 項目中的分頁性能問題,并分享了他們的成果:

  • 30 秒 -> 250 毫秒
  • 28 秒 -> 2 秒
  • 7.5 倍速度提升
  • 1.1 秒 -> 0.1 秒
  • 20 秒 -> 2 秒
  • 2 秒 -> 0.2 秒

總而言之,如果你正在為 Laravel 項目中的分頁性能問題而苦惱,不妨嘗試一下 hammerstone/fast-paginate,它可能會給你帶來驚喜!

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享