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

使用 insert 命令向資料表中插入一些記錄 —

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)

更新於:11-12-2019

3K+ 瀏覽量

開啟你的職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.