使用制限 クエリ ステートメントを使用する場合、多くの場合、データの最初の数行または中間行を返す必要があります。このとき、何をすればよいでしょうか。心配しないでください。MySQL はすでにそのような機能を提供しています。 SELECT * FROM テーブル LIMIT [オフセット,] 行 | 行 OFFSET オフセット LIMIT 句を使用すると、SELECT ステートメントで指定された数のレコードを返すように強制できます。 LIMIT は 1 つまたは 2 つの数値引数を受け入れます。引数は整数定数でなければなりません。 2 つの引数が指定された場合、最初の引数は返される最初の行の mysql> SELECT * FROM table LIMIT 5,10; // 6-15行目を取得 特定のオフセットからレコードセットの末尾までのすべての行を取得するには、2 番目のパラメータを -1 に指定します。 mysql> SELECT * FROM table LIMIT 95,-1; // 96行目から最後の行までを取得します。 引数が 1 つだけ指定されている場合は、返される行の最大数を示します。 mysql> SELECT * FROM table LIMIT 5; // 最初の5行を取得します つまり、 MySQL ページングクエリステートメントのパフォーマンス分析 MySql ページング SQL ステートメントを MSSQL の TOP 構文と比較すると、MySQL の LIMIT 構文の方がはるかにエレガントです。ページングに使用するのは当然です。 最も基本的なページング方法: SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ... 小規模および中規模のデータ量の場合、このような SQL で十分です。注意すべき唯一のことは、インデックスが使用されていることを確認することです。たとえば、実際の SQL が次のステートメントに似ている場合は、category_id 列と id 列に複合インデックスを作成する方が適切です。 次のようにコードをコピーします。 SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10 サブクエリのページング方法: データ量が増えるとページ数も増え、次の数ページの SQL は次のようになります。 次のようにコードをコピーします。 SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10 簡単に言えば、ページ番号を大きくするほど、 この時点で、次のようにサブクエリを使用してページング効率を向上させることができます。 SELECT * FROM articles WHERE id >= (SELECT id FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10 JOINページング方式 `content` から * を選択 t1 JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) AS t2 WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize; 私のテストによると、結合ページングとサブクエリ ページングの効率は基本的に同じレベルであり、消費時間も基本的に同じです。 SQL ステートメントの説明: id select_type テーブルタイプ possible_keys key key_len ref 行数 追加 1 PRIMARY <derived2> システム NULL NULL NULL NULL 1 1 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 6264 whereの使用 2 DERIVEDコンテンツインデックス NULL PRIMARY 4 NULL 27085 インデックスの使用 なぜこのようなことが起こるのでしょうか?サブクエリはインデックスに対して実行され、通常のクエリはデータ ファイルに対して実行されるため、一般的に、インデックス ファイルはデータ ファイルよりもはるかに小さいため、操作がより効率的になります。 実際、同様の戦略パターンを使用してページングを処理できます。たとえば、ページ数が 100 未満の場合は、最も基本的なページング方法を使用します。ページ数が 100 を超える場合は、サブクエリ ページング方法を使用します。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: vite2.0 設定学習の詳しい説明(typescript 版)
>>: Linux システムでデプロイメント プロジェクトを設定する方法
今日は建国記念日で、誰もが祖国の誕生日をお祝いしようとしています。毎年この時期になると、WeChat...
必要:あるフィールドの同一項目を結合し、別の時間フィールドで並べ替えます。例:初めに テーブルから都...
この CSS リセットは、Eric Meyers の CSS リセットに基づいて変更されており、特に...
1. HTMLハイパーリンクによって開かれるウィンドウのサイズコードをコピーコードは次のとおりです...
<!doctypehtml> <html xmlns="http://...
この記事では、Mysql WorkBenchのインストールと設定のグラフィックチュートリアルを参考ま...
まず、transform-origin 属性を使用する必要があります。transform 属性は必ず...
具体的なコードは次のとおりです。 HTMLコードは次のとおりです <div class=&qu...
<br />前回のCSSに関する記事は、多くの人にあまり理解されませんでした。そのため、...
なぜなら、SQL Server 2005 に基づくデータベース チュートリアルがあり、そこで使用され...
この記事は、「24 Days of Linux Desktop」の特別シリーズの一部です。 Open...
SUSE Linuxでルートパスワードを忘れた場合の解決方法SUSE (Linux オペレーティング...
HTTP圧縮とは場合によっては、比較的大きなメッセージ データがクライアントとサーバー間で送信され、...
目次配列分割代入オブジェクトの分解代入分割割り当ての適用変数の値の交換関数から複数の値を返すマップ構...
表のキャプションは表の上または下に配置でき、プロパティで調整できます。デフォルトのテーブル タイトル...