MySQL データベース - MySQL LIMIT: クエリ結果の数を制限します

データ テーブルに数万のデータがある場合、テーブル内のすべてのデータを一度にクエリすると、データが返される速度が低下し、データベース サーバーに大きな負荷がかかります。この時点で、LIMIT キーワードを使用して、クエリ結果によって返されるレコードの数を制限できます。

LIMIT は MySQL の特別なキーワードで、クエリ結果がどのレコードから表示され、合計で何レコード表示されるかを指定するために使用されます。

LIMITキーワードの使い方には、初期位置を指定する方法、初期位置を指定しない方法、OFFSETと組み合わせて使用​​する方法の3つがあります。

初期位置を指定

LIMIT キーワードは、照会結果を表示するレコードと表示するレコード数を指定できます。

初期位置を指定する LIMIT の基本的な構文形式は次のとおりです。

LIMIT 初期位置、レコード数

このうち、「初期位置」は表示を開始するレコードを示し、「レコード数」は表示されたレコードの数を示します。最初のレコードの位置は 0 で、2 番目のレコードの位置は 1 です。後続のレコードの後に​​類推が続きます。

注: LIMIT の後の両方のパラメーターは、正の整数でなければなりません。

例 1

tb_students_info テーブルで、LIMIT 句を使用して、4 番目のレコードから始まる 5 つのレコードを返す SQL ステートメントと実行結果は次のとおりです。

mysql> SELECT * FROM tb_students_info LIMIT 3,5;
+----+-------+---------+------+------+--------+------------+
| id | name  | dept_id | age  | sex  | height | login_date |
+----+-------+---------+------+------+--------+------------+
|  4 | Jane  |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim   |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John  |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily  |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan |       4 |   23 | F    |    170 | 2015-10-01 |
+----+-------+---------+------+------+--------+------------+
5 rows in set (0.00 sec)

結果からわかるように、ステートメントは 4 番目のレコードから始まる 5 つのレコードを返します。LIMIT キーワードの後の最初の数字「3」は 4 行目から開始することを意味し (レコード位置は 0 から始まり、4 行目の位置は 3)、2 つ目の数字 5 は返される行数を意味します。

初期位置が指定されていません

LIMIT キーワードで開始位置を指定しない場合、最初のレコードから表示されます。表示されるレコードの数は、LIMIT キーワードによって指定されます。

初期位置を指定しない LIMIT の基本的な構文形式は次のとおりです。

LIMIT 件のレコード

ここで、「レコード数」は、表示されたレコードの数を示す。「レコード数」の値がクエリ結果の総数に満たない場合、最初のレコードから指定した数のレコードが表示されます。「レコード数」の値がクエリ結果の総数より大きい場合、クエリされたすべてのレコードが直接表示されます。

例 2

tb_students_info テーブルのクエリ結果の最初の 4 行を表示します。SQL ステートメントと実行結果は次のとおりです。

mysql> SELECT * FROM tb_students_info LIMIT 4;
+----+-------+---------+------+------+--------+------------+
| id | name  | dept_id | age  | sex  | height | login_date |
+----+-------+---------+------+------+--------+------------+
|  1 | Dany  |       1 |   25 | F    |    160 | 2015-09-10 |
|  2 | Green |       3 |   23 | F    |    158 | 2016-10-22 |
|  3 | Henry |       2 |   23 | M    |    185 | 2015-05-31 |
|  4 | Jane  |       1 |   22 | F    |    162 | 2016-12-20 |
+----+-------+---------+------+------+--------+------------+
4 rows in set (0.00 sec)

結果には 4 つのレコードのみが表示されます。これは、「LIMIT 4」が表示されるレコードの数を 4 に制限していることを示しています。

例 3

tb_students_info テーブルのクエリ結果の最初の 15 行を表示します。SQL ステートメントと実行結果は次のとおりです。

mysql> SELECT * FROM tb_students_info LIMIT 15;
+----+--------+---------+------+------+--------+------------+
| id | name   | dept_id | age  | sex  | height | login_date |
+----+--------+---------+------+------+--------+------------+
|  1 | Dany   |       1 |   25 | F    |    160 | 2015-09-10 |
|  2 | Green  |       3 |   23 | F    |    158 | 2016-10-22 |
|  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |
|  4 | Jane   |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John   |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily   |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan  |       4 |   23 | F    |    170 | 2015-10-01 |
|  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |
| 10 | Tom    |       4 |   23 | M    |    165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.26 sec)

結果に表示されるレコードは 10 件のみです。LIMIT キーワードは 15 レコードの表示を指定していますが、照会結果には 10 レコードしかありません。したがって、データベース システムでは、これら 10 件のレコードがすべて表示されます。

1 つのパラメーターを使用する LIMIT は、クエリ結果の最初の行から開始することを指定し、唯一のパラメーターは返される行の数を示します。つまり、"LIMIT n" は "LIMIT 0, n" と同じ結果を返します。2 つのパラメーターを指定した LIMIT は、任意の位置から始まる指定された行数のデータを返します。

LIMIT と OFFSET の組み合わせ

LIMIT は OFFSET と組み合わせて使用​​できます。構文は次のとおりです。

LIMIT レコード数 OFFSET 初期位置

このパラメーターは LIMIT 構文のパラメーターと同じ意味を持ち、「開始位置」は表示を開始するレコードを指定し、「レコード番号」は表示されるレコードの数を示します。

例 4

tb_students_info テーブルで、LIMIT OFFSET を使用して、4 番目のレコードから行番号が 5 のレコードを返す SQL ステートメントと実行結果は次のとおりです。

mysql> SELECT * FROM tb_students_info LIMIT 5 OFFSET 3;
+----+-------+---------+------+------+--------+------------+
| id | name  | dept_id | age  | sex  | height | login_date |
+----+-------+---------+------+------+--------+------------+
|  4 | Jane  |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim   |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John  |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily  |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan |       4 |   23 | F    |    170 | 2015-10-01 |
+----+-------+---------+------+------+--------+------------+
5 rows in set (0.00 sec)

結果からわかるように、ステートメントは 4 番目のレコードから始まる 5 つのレコードを返します。つまり、"LIMIT 5 OFFSET 3" は 4 番目のレコードから始まる次の 5 レコードを取得することを意味し、"LIMIT 3, 5" によって返される結果は同じです。

ダーク ホース プログラマー MySQL データベース エントリから習熟まで、mysql のインストールから高度な mysql まで、mysql の最適化をすべて網羅

おすすめ

転載: blog.csdn.net/Itmastergo/article/details/130336396