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

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

Barbara Streisand
Barbara Streisandオリジナル
2025-01-13 19:21:44558ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。