LIMIT 句に大きな OFFSET を使用して MySQL クエリを最適化する方法

Barbara Streisand
リリース: 2024-11-19 08:57:02
オリジナル
241 人が閲覧しました

How to Optimize MySQL Queries with Large OFFSET in LIMIT Clause?

LIMIT 句の大きな OFFSET による MySQL のパフォーマンスの向上

MySQL SELECT クエリの LIMIT 句に大幅なオフセットを適用するとパフォーマンスの低下に直面する?この問題は、「m」で示されるオフセットが特定のしきい値 (1,000,000 など) を超えた場合に発生し、クエリの実行が遅くなります。

特定のテーブル シナリオでは LIMIT 句を使用することが不可欠ですが、方法はあります。 ID 範囲 ('id > 1,000,000 制限) に基づくフィルタリングなどの代替手段に頼らずにパフォーマンスを最適化するn').

インデックステーブルベースの最適化

ターゲットテーブルの主キーとの順次関係を確立するインデックステーブルの作成を検討してください。このインデックス作成アプローチにより、クエリのパフォーマンスが大幅に向上します。

  1. インデックス テーブルの作成:

    CREATE TABLE seq (
       seq_no int not null auto_increment,
       id int not null,
       primary key(seq_no),
       unique(id)
    );
    ログイン後にコピー
  2. Populateシーケンス:

    TRUNCATE seq;
    INSERT INTO seq (id) SELECT id FROM mytable ORDER BY id;
    ログイン後にコピー
  3. インデックスを使用した最適化されたクエリ:
    のオフセットから 1000 行をフェッチするには1,000,000:

    SELECT mytable.*
    FROM mytable
    INNER JOIN seq USING(id)
    WHERE seq.seq_no BETWEEN 1000000 AND 1000999;
    ログイン後にコピー

インデックス テーブルを活用することで、この改訂されたクエリは順次スキャンをバイパスし、オフセットに基づいて目的の行を効率的に取得し、パフォーマンスを大幅に向上させます。

以上がLIMIT 句に大きな OFFSET を使用して MySQL クエリを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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