大きなオフセットを持つ LIMIT 句を利用する MySQL クエリでは、重大なパフォーマンスの問題が発生する可能性があります。この課題に対処するには、次の最適化手法を検討してください。
LIMIT 句を使用して行を直接フェッチするのではなく、シーケンシャル キーを主キーの値にマップするインデックス テーブルを作成します。ターゲットテーブル。これにより、INNER JOIN 句と WHERE 句を使用してデータを効率的に取得できます。
手順:
インデックス テーブルを作成します。
CREATE TABLE seq ( seq_no int NOT NULL AUTO_INCREMENT, id int NOT NULL, PRIMARY KEY(seq_no), UNIQUE(id) );
インデックステーブルにデータを追加します:
TRUNCATE seq; INSERT INTO seq (id) SELECT id FROM mytable ORDER BY id;
からデータを取得しますターゲット テーブル:
SELECT mytable.* FROM mytable INNER JOIN seq USING(id) WHERE seq.seq_no BETWEEN 1000000 AND 1000999;
このアプローチを利用すると、LIMIT オフセットが大きいクエリのパフォーマンスが大幅に向上し、データを効率的に取得できるようになります。
以上が大きな LIMIT オフセットを使用して MySQL クエリを最適化するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。