mysql制限クエリ最適化分析_PHPチュートリアル
Jul 21, 2016 pm 03:49 PM
制限構文:
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 にすぎません。オフセットが大きいほど、後者の方が優れていると予想できます。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか?

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか?

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか?

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか?

清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす
