ホームページ  >  記事  >  バックエンド開発  >  mysql制限クエリ最適化分析_PHPチュートリアル

mysql制限クエリ最適化分析_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:49:11874ブラウズ

制限構文:

コードをコピー コードは次のとおりです:

SELECT * FROM table LIMIT [offset,] rows OFFSET offset

LIMIT 句を使用すると、SELECT ステートメントに指定した数のレコードを強制的に返すことができます。 LIMIT は 1 つまたは 2 つの数値引数を受け入れます。パラメータは整数定数である必要があります。
2 つのパラメーターが指定された場合、最初のパラメーターは最初に返されるレコード行のオフセットを指定し、2 番目のパラメーターは返されるレコード行の最大数を指定します。最初のレコード行のオフセットは 0 (1 ではありません) です。
PostgreSQL との互換性を保つために、MySQL は構文 LIMIT # OFFSET # もサポートしています。

例:

コードをコピー コードは次のとおりです:

mysql> SELECT * FROM table LIMIT 5,10 //レコード行6-15を取得します

//特定のオフセットからレコードセットの末尾までのすべてのレコード行を取得するには、2 番目のパラメータを -1
mysql> として指定できます。 SELECT * FROM table LIMIT 95,-1; // レコード行 96 を取得します。 - 最後

//パラメータが 1 つだけ指定されている場合、LIMIT n は LIMIT 0,n と同等です
mysql> // 最初の 5 レコードを取得します。行

MySQL の制限はページングに大きな利便性をもたらしますが、データ量が多い場合、制限によるパフォーマンスは急激に低下します。
10 個のデータも取得しますが、次の 2 つの文は同じ大きさではありません。

コードをコピー コードは次のとおりです:

select * from table limit 10000,10
select * from tablelimit 0,10

この記事では、limit を直接使用する代わりに、最初にオフセットの ID を取得し、次に制限サイズを直接使用してデータを取得します。彼のデータによると、limit を直接使用するよりも明らかに優れています。

ここでは、特に 2 つの状況でのテストにデータを使用します。

1. オフセットが比較的小さい場合:

コードをコピーします コードは次のとおりです:

select * from table limit 10,10
//複数回実行、時間は0.0004-0.0005の間のままです
Select * From table Where vid >=(表から vid を選択 vid による順序 制限 10,1) 制限 10
//複数の実行では、時間は 0.0005 ~ 0.0006 の間、主に 0.0006 のままです

結論: オフセット offset が小さい場合は、limit を直接使用する方が良いです。これがサブクエリの理由であることは明らかです。

2. オフセットが大きい場合:

コードをコピーします コードは次のとおりです:

select * from table limit 10000,10
//複数回実行しても、時間は約 0.0187 のままです

Select * From table Where vid >=(Select vid From table Order By vid limit 10000,1) limit 10
//複数回実行しても、時間は約 0.0061 のままで、前の 1/3 にすぎません。オフセットが大きいほど、後者の方が優れていると予想できます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/319593.html技術記事制限構文: 次のようにコードをコピーします。 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 句を使用すると、SELECT ステートメントに指定された数のレコードを強制的に返すことができます。リム...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。