LIMIT 句の大きな OFFSET による MySQL のパフォーマンスの向上
MySQL SELECT クエリの LIMIT 句に大幅なオフセットを適用するとパフォーマンスの低下に直面する?この問題は、「m」で示されるオフセットが特定のしきい値 (1,000,000 など) を超えた場合に発生し、クエリの実行が遅くなります。
特定のテーブル シナリオでは LIMIT 句を使用することが不可欠ですが、方法はあります。 ID 範囲 ('id > 1,000,000 制限) に基づくフィルタリングなどの代替手段に頼らずにパフォーマンスを最適化するn').
インデックステーブルベースの最適化
ターゲットテーブルの主キーとの順次関係を確立するインデックステーブルの作成を検討してください。このインデックス作成アプローチにより、クエリのパフォーマンスが大幅に向上します。
インデックス テーブルの作成:
CREATE TABLE seq ( seq_no int not null auto_increment, id int not null, primary key(seq_no), unique(id) );
Populateシーケンス:
TRUNCATE seq; INSERT INTO seq (id) SELECT id FROM mytable ORDER BY id;
インデックスを使用した最適化されたクエリ:
のオフセットから 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 サイトの他の関連記事を参照してください。