PHP での MYSQL 制限の最適化

WBOY
リリース: 2016-06-13 12:30:57
オリジナル
982 人が閲覧しました

また、10 個のデータ
select * from yanxue8_visit limit 10000,10

select * from yanxue8_visit limit 0,10
は、同じレベルの量ではありません。

インターネット上には、制限に関する 5 つの最適化ガイドラインも多数あります。これらはすべて MySQL マニュアルから翻訳されたものですが、正確ではありますが、実用的ではありません。今日、制限の最適化に関する非常に良い記事を見つけました。元のアドレス: http://www.zhenhua.org/article.asp?id=200

この記事では、limit を直接使用する代わりに、まずオフセット ID を取得し、次に、limit size を直接使用してデータを取得します。彼のデータによると、limit を直接使用するよりも明らかに優れています。ここでは、特に 2 つの状況でのテストにデータを使用します。 (テスト環境 win2033 p4 デュアルコア (3GHZ) 4G メモリ mysql 5.0.19)

1. オフセットが比較的小さい場合。
select * from yanxue8_visit limit 10,10
複数回実行、時間は 0.0004 ~ 0.0005 の間のまま
Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10 ,1
) limit 10

複数の実行後、時間は 0.0005 ~ 0.0006 の間で推移し、主に 0.0006
結論: オフセット offset が小さい場合は、limit を直接使用する方が良いです。これがサブクエリの理由であることは明らかです。
2. オフセットが大きい場合。
select * from yanxue8_visit limit 10000,10
複数回実行しても、時間は約 0.0187 のままです
Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10000 ,1
) 制限 10
複数回実行すると、時間は約 0.0061 のままで、前の 1/3 にすぎません。オフセットが大きいほど、後者の方が優れていると予想できます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート