ホームページ >データベース >mysql チュートリアル >LIMIT 句で大きなオフセットを使用して MySQL クエリを最適化する方法
LIMIT 句に大きなオフセットを使用した MySQL クエリの最適化
LIMIT 句に大きなオフセットを使用して MySQL クエリを実行すると、パフォーマンスの問題が発生する可能性があります。起きます。これは、SELECT * FROM table LIMIT m, n; などの従来のオフセット ベースのメソッドが大きなオフセット値 (1,000,000 を超えるなど) に対して非効率になる場合に課題となる可能性があります。
解決策: インデックス テーブルシーケンシャル キー マッピングの場合
このようなクエリを最適化するには、別のアプローチを使用します。雇用することができる。これには、ターゲット テーブルの主キーとの順序関係を確立するインデックス テーブルの作成が含まれます。このインデックス付けテーブルをターゲット テーブルに結合し、WHERE 句を利用することで、目的の行をより効率的に取得できます。
インデックス付けテーブルの作成
CREATE TABLE seq ( seq_no INT NOT NULL AUTO_INCREMENT, id INT NOT NULL, PRIMARY KEY (seq_no), UNIQUE (id) );
Sequence
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;
この例では、1,000,000 のオフセットから 1,000 行が取得されます。この方法では、インデックス テーブルを利用して、目的のオフセットをターゲット テーブル内の正しい行にマップし、従来のオフセット ベースのアプローチと比較してクエリのパフォーマンスを大幅に向上させます。
以上がLIMIT 句で大きなオフセットを使用して MySQL クエリを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。