最適化クエリのパフォーマンスの最適化-Limit

5、リミットクエリの最適化

リミットは、一般的に、これはIOの問題の多くの原因となりますFilesortsを使用する時のバックのように、ほとんど、使用する句で長い順を伴って、ページング処理で使用されます。
例:
オンデマンド:クエリ動画IDと説明、およびトピックに従ってソートは、数50から始まる5つのデータを抽出しました。

select film_id,description from sakila.film order by title limit 50,5;

結果の実装:
ここに画像を挿入説明
その実施計画を見てみては:
ここに画像を挿入説明
この操作のために、我々は一種の最適化の使用しますか?
最適化ステップ1:
我々は知っているので、操作によってインデックス化主キー列または順序を使用するには、プライマリキーによって順序付けInnoDBの論理的な順序です。あなたは、IO操作の多くを回避することができます。

select film_id,description from sakila.film order by film_id limit 50,5;

ここに画像を挿入説明
実行計画を見て
ここに画像を挿入説明
、私たちが取得する場合は、5つのレコードが500行を開始したことを、実施計画は何ですか?

explain select film_id,description from sakila.film order by film_id limit 500,5\G

ここに画像を挿入説明
ここに画像を挿入説明
私たちは未来を反転として、IO操作は、テーブルが数十数百万行のデータのを持っている場合、我々はさらに最適化されなければならないので、ゆっくりとより多くなり、バックフリップ、ますます大きくなるだろう。

最適化ステップ2
プライマリキークエリろ過次回を使用し、最後で返される主キーのレコード。(注:データ記録の大量の過剰なスキャンを避けるために)
最後の動作限界は、50 5、したがって我々は、前のレコードのインデックス値を使用して、この最適化プロセスに必要

select film_id,description from sakila.film  where film_id >55 and film_id<=60 order by film_id limit 1,5;

実行計画を見る:
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
結論:走査線の数が同じ、実施計画が固定され、効率が非常に固定されています。

注:
ソート順と連続に主キー、列、またはいくつかの列の主キーの中間空いているが、データ5行が表示される不足データリストになる場合、連続していない場合は、追加の列の確立が列をINDEX_ID、保証自動インクリメントされ、インデックスに追加する列のデータ。

リリース1079元の記事 ウォンの賞賛888 ビュー40000 +

おすすめ

転載: blog.csdn.net/weixin_42528266/article/details/103993809