MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

複数の行を効果的に選択するためのMySQLクエリ?


複数の行を効果的に選択するには、インデックスを使用する必要があります。まずテーブルを作成しましょう-

mysql> create table DemoTable1501
   -> (
   -> Id int NOT NULL PRIMARY KEY,
   -> URL text
   -> );
Query OK, 0 rows affected (0.62 sec)

インデックスを作成するためのクエリは次のとおりです-

mysql> create index id_index on DemoTable1501(Id);
Query OK, 0 rows affected (0.23 sec)
Records: 0  Duplicates: 0  Warnings: 0

挿入コマンド-

を使用して、テーブルにいくつかのレコードを挿入します
mysql> insert into DemoTable1501 values(101,'www.facebook.com');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1501 values(110,'www.google.com');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable1501 values(220,'www.gmail.com');
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable1501 values(350,'www.youtube.com');
Query OK, 1 row affected (0.08 sec)

selectステートメントを使用してテーブルのすべてのレコードを表示する-

mysql> select * from DemoTable1501;

これにより、次の出力が生成されます-

+-----+------------------+
| Id  | URL              |
+-----+------------------+
| 101 | www.facebook.com |
| 110 | www.google.com   |
| 220 | www.gmail.com    |
| 350 | www.youtube.com  |
+-----+------------------+
4 rows in set (0.00 sec)

以下は、複数の行を効率的に選択するためのクエリです-

mysql> select * from DemoTable1501
   -> where Id in(101,220,350);

これにより、次の出力が生成されます-

+-----+------------------+
| Id  | URL             |
+-----+------------------+
| 101 | www.facebook.com |
| 220 | www.gmail.com    |
| 350 | www.youtube.com  |
+-----+------------------+
3 rows in set (0.00 sec)

これを証明するには、Handler_read_keyが4つのIDのうち3つを使用するSHOWコマンドを使用します-

mysql> SHOW STATUS LIKE 'Handler_%';

これにより、次の出力が生成されます-

+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Handler_commit             |     1 |
| Handler_delete             |     0 |
| Handler_discover           |     0 |
| Handler_external_lock      |     2 |
| Handler_mrr_init           |     0 |
| Handler_prepare            |     0 |
| Handler_read_first         |     0 |
| Handler_read_key           |     3 |
| Handler_read_last          |     0 |
| Handler_read_next          |     0 |
| Handler_read_prev          |     0 |
| Handler_read_rnd           |     0 |
| Handler_read_rnd_next      |     0 |
| Handler_rollback           |     0 |
| Handler_savepoint          |     0 |
| Handler_savepoint_rollback |     0 |
| Handler_update             |     0 |
| Handler_write              |     0 |
+----------------------------+-------+
18 rows in set (0.00 sec)

  1. 一度に1バッチずつ行を選択するMySQLクエリ

    このために、LIMITとOFFSETの概念を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1514    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> FirstName varchar(20)    -> ); Query OK, 0 rows affected (0.63 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します

  2. MySQLの複数のテーブルから行をカウント(*)しますか?

    MySQLで複数のテーブルの行をカウントするには、構文は次のとおりです- Select     (select count(*) from yourTableName1) as anyAliasName1,     (select count(*) from yourTableName2) as anyAliasName2     from dual; まずテーブルを作成しましょう- mysql> create table DemoTable1    -> (    -> I