制限構文:
LIMIT 句を使用すると、SELECT ステートメントに指定した数のレコードを強制的に返すことができます。 LIMIT は 1 つまたは 2 つの数値引数を受け入れます。パラメータは整数定数である必要があります。
2 つのパラメーターが指定された場合、最初のパラメーターは最初に返されるレコード行のオフセットを指定し、2 番目のパラメーターは返されるレコード行の最大数を指定します。最初のレコード行のオフセットは 0 (1 ではありません) です。
PostgreSQL との互換性を保つために、MySQL は構文 LIMIT # OFFSET # もサポートしています。
例:
//特定のオフセットからレコードセットの末尾までのすべてのレコード行を取得するには、2 番目のパラメータを -1
mysql> として指定できます。 SELECT * FROM table LIMIT 95,-1; // レコード行 96 を取得します。 - 最後
//パラメータが 1 つだけ指定されている場合、LIMIT n は LIMIT 0,n と同等です
mysql> // 最初の 5 レコードを取得します。行
MySQL の制限はページングに大きな利便性をもたらしますが、データ量が多い場合、制限によるパフォーマンスは急激に低下します。
10 個のデータも取得しますが、次の 2 つの文は同じ大きさではありません。
この記事では、limit を直接使用する代わりに、最初にオフセットの ID を取得し、次に制限サイズを直接使用してデータを取得します。彼のデータによると、limit を直接使用するよりも明らかに優れています。
ここでは、特に 2 つの状況でのテストにデータを使用します。
1. オフセットが比較的小さい場合:
結論: オフセット offset が小さい場合は、limit を直接使用する方が良いです。これがサブクエリの理由であることは明らかです。
2. オフセットが大きい場合:
Select * From table Where vid >=(Select vid From table Order By vid limit 10000,1) limit 10
//複数回実行しても、時間は約 0.0061 のままで、前の 1/3 にすぎません。オフセットが大きいほど、後者の方が優れていると予想できます。