ホームページ > データベース > mysql チュートリアル > キーセットのページネーションはオフセットが大きい PostgreSQL クエリをどのように最適化できますか?

キーセットのページネーションはオフセットが大きい PostgreSQL クエリをどのように最適化できますか?

Barbara Streisand
リリース: 2025-01-13 19:21:44
オリジナル
555 人が閲覧しました

How Can Keyset Pagination Optimize PostgreSQL Queries with Large Offsets?

大規模なテーブルでの PostgreSQL ページ分割パフォーマンスの向上

OFFSET を使用して大規模な PostgreSQL テーブル (数百万行) からページ分割されたデータを取得すると、クエリ速度に重大な影響を与える可能性があります。この記事では、優れた最適化戦略であるキーセットのページネーションを紹介します。

キーセットのページネーション: より効率的なアプローチ

キーセットのページネーションは、前のページの最後の行の値を利用することで、OFFSET のパフォーマンス上の落とし穴を回避します。 クエリは次のとおりです:

<code class="language-sql">SELECT *
FROM   big_table
WHERE  (vote, id) > (vote_x, id_x)
ORDER  BY vote, id
LIMIT  n;</code>
ログイン後にコピー

vote_xid_x は、前のページの最後の行の voteid を表します。 これにより、データベースは効率的に行をスキップできるようになり、OFFSET.

と比較してパフォーマンスが大幅に向上します。

インデックスの強化

最適なパフォーマンスを得るには、WHERE 句で使用される列にインデックスを作成します。

<code class="language-sql">CREATE INDEX vote_order_asc ON big_table (vote, id);</code>
ログイン後にコピー

重要な注意事項:

  • 一貫した結果を保証するには、(vote, id) の組み合わせは一意である必要があります。
  • ORDER BY 句の方向はインデックスの方向と一致する必要があります。
  • この方法は、ORDER BY 方向が混合または矛盾するクエリには適していません。

さらに読む:

以上がキーセットのページネーションはオフセットが大きい PostgreSQL クエリをどのように最適化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート