カーソルページネーション vs オフセットページネーション:どちらを選ぶべきか

カーソルページネーションとオフセットページネーションを比較。パフォーマンス特性・使い分けの基準・SQL でのカーソルページネーション実装方法を解説します。

Read in: en
カーソルページネーション vs オフセットページネーション:どちらを選ぶべきか

概要

オフセットページネーションとカーソルページネーションの比較についてまとめる。

オフセットページネーションとは

SELECT * FROM table LIMIT 10 OFFSET 20 のように、OFFSETLIMIT を使ってページネーションを実現する方法。

比較的実装が容易で、任意のページに直接アクセスすることができる。全体のページ数が把握しやすいが、データセットが大きい場合、パフォーマンスが低下する。

カーソルページネーションとは

SELECT * FROM table WHERE id > 20 ORDER BY id LIMIT 10 のようにページネーションを実現する方法。

データの順序が重要な場合に有効で、データが頻繁に更新される場合でも安定して動作する。任意のページにアクセスすることが困難で、全体のページ数を把握することが難しい。

比較

特徴 オフセットページネーション カーソルページネーション
メリット 実装がシンプル 大規模データでも高いパフォーマンス
任意のページに直接アクセス可能 データの更新による不安定さが少ない
全体のページ数が把握しやすい 順序が必要なデータに最適
デメリット パフォーマンス低下(特に後半のページ) 任意のページへのアクセスが困難
データが頻繁に更新される場合、不安定になりやすい 実装がやや複雑
全体のページ数の把握が難しい

デメリットの解決策

オフセットページネーション

パフォーマンスの低下を解決するアイデアとしては、以下のようなものがある。

データの不安定さを解決するアイデアとしては、以下のようなものがある。

カーソルページネーション

任意のページへのアクセスが困難な方法を解決するアイデアとしては、以下のようなものがある。

実装の複雑さを解決するアイデアとしては、以下のようなものがある。

Tags: オフセットページネーション カーソルページネーション
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事