MySQLの効率化limit
ページング・クエリーは、実際の作業でよく発生しますが、異なるデータベースでは、ページング・クエリーの実装方法が異なります.MySQLでのページングはlimitで実現されていますが、limitの効率はどうでしょうか.見てみましょう.
1、ページング問題
ここでLIMITの原理を簡単に説明します.ここではLIMIT N,Mに基づいて、LIMITはまずN+M行を探して、それからN行からM行を取ります.では、このようなSQLは、1回のクエリ1275500に対して1つの操作に対して高価なオーバーヘッドであるべきです.LIMITのような最適化では,Nをできるだけ小さくするか,使わないかを第一の目標とする.
2、最適化方案ページをめくる ページにヒントを与えることができます.今私たちが見ているのは5ページ目で、見終わったら6ページ目を見たいです.6ページ目も同じように20件の記録が表示されています.この例に準じて、6ページ目の日値が5ページ目より小さいことを肯定することができます.5ページ目の最小日値が:2009-11-4であれば、私たちは使用することができます.
これで6ページ目の内容を調べます.同様に、4ページ目のコンテンツを表示する場合(5ページ目の最大日付を:2009-11-3と仮定)は、4ページ目のコンテンツは:
もちろん、これは基本的な考え方であり、各ページのデータをソートする必要があります.ジャンプページ 「1,2,3,4,5...」と表示された場合、ページをジャンプできます.2ページ目から5ページ目にジャンプすると、ここに2ページ目の最小日付があります.
ここを見ると、なぜ大手サイトのページが表示されていないのかがわかります.注文できるようにしましょう.あなたにページを入力して飛び越える枠もありません.ジャンプのページが多すぎると、N値が大きすぎるという問題もあります.だから何とかしなければならない.変換スキーム 私は他の唯一の標識を利用して比較することができて、それによってページングを実現することができます
元のクエリー
変換
まとめ:
私たちはコードを書く過程で、機能の実現だけでなく、その性能の最適化も考慮しなければならない.どのように高品質のコードを書くかは、ソースコードを多く見て、自分のコードを多く考える必要があります.どんなに大きな成果があっても、少しの努力で積み重ねてきたんだよ、just do it.
1、ページング問題
ここでLIMITの原理を簡単に説明します.ここではLIMIT N,Mに基づいて、LIMITはまずN+M行を探して、それからN行からM行を取ります.では、このようなSQLは、1回のクエリ1275500に対して1つの操作に対して高価なオーバーヘッドであるべきです.LIMITのような最適化では,Nをできるだけ小さくするか,使わないかを第一の目標とする.
2、最適化方案
SELECT * FROM pw_gbook WHERE uid='48' and postdate<’2009-11-1’ ORDER BY postdate DESC LIMIT 20;
これで6ページ目の内容を調べます.同様に、4ページ目のコンテンツを表示する場合(5ページ目の最大日付を:2009-11-3と仮定)は、4ページ目のコンテンツは:
SELECT * FROM pw_gbook WHERE uid='48' and postdate>’2009-11-3’ ORDER BY postdate DESC LIMIT 20;
もちろん、これは基本的な考え方であり、各ページのデータをソートする必要があります.
SELECT * FROM pw_gbook WHERE uid='48' and postdate<’2009-11-3’ ORDER BY postdate DESC LIMIT 40,20;
ここを見ると、なぜ大手サイトのページが表示されていないのかがわかります.注文できるようにしましょう.あなたにページを入力して飛び越える枠もありません.ジャンプのページが多すぎると、N値が大きすぎるという問題もあります.だから何とかしなければならない.
元のクエリー
SELECT * FROM pw_gbook WHERE uid='48' ORDER BY postdate DESC LIMIT 1275480,20;
変換
SELECT * FROM pw_gbook WHERE id>1275480 and uid='48' ORDER BY postdate DESC LIMIT 20;
まとめ:
私たちはコードを書く過程で、機能の実現だけでなく、その性能の最適化も考慮しなければならない.どのように高品質のコードを書くかは、ソースコードを多く見て、自分のコードを多く考える必要があります.どんなに大きな成果があっても、少しの努力で積み重ねてきたんだよ、just do it.