Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ใช้คำสั่ง EXPLAIN ใน MySQL เพื่อดูแผนการประมวลผลคิวรี่

EXPLAIN ช่วยวิเคราะห์ว่า MySQL จะดำเนินการคิวรี่อย่างไร ใช้ดัชนีไหน คาดการณ์แถวที่ต้องอ่าน

mysql> CREATE TABLE DemoTable1541 (
    -> EmployeeId INT,
    -> EmployeeFirstName VARCHAR(20) NOT NULL
    -> );
Query OK, 0 rows affected (0.94 sec)
mysql> CREATE INDEX emp_name_index ON DemoTable1541(EmployeeFirstName);
Query OK, 0 rows affected (0.75 sec)
mysql> INSERT INTO DemoTable1541 VALUES(1, 'Robert');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable1541 VALUES(2, 'Adam');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable1541 VALUES(3, 'Mike');
Query OK, 1 row affected (0.14 sec)
mysql> SELECT * FROM DemoTable1541;
+------------+-------------------+
| EmployeeId | EmployeeFirstName |
+------------+-------------------+
|          1 | Robert            |
|          2 | Adam              |
|          3 | Mike              |
+------------+-------------------+
3 rows in set (0.00 sec)

ใช้ EXPLAIN กับคิวรี่ค้นหาชื่อ Mike:

mysql> EXPLAIN SELECT * FROM DemoTable1541 WHERE EmployeeFirstName = 'Mike';
+----+-------------+---------------+------------+------+----------------+----------------+---------+-------+------+----------+-------+
| id | select_type | table         | partitions | type | possible_keys  | key            | key_len | ref   | rows | filtered | Extra |
+----+-------------+---------------+------------+------+----------------+----------------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | DemoTable1541 | NULL       | ref  | emp_name_index | emp_name_index | 62      | const |    1 |   100.00 | NULL  |
+----+-------------+---------------+------------+------+----------------+----------------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

คอลัมน์สำคัญ: type=ref ใช้ดัชนี, key=emp_name_index ใช้ดัชนีนี้, rows=1 คาดการณ์อ่าน 1 แถว (ดีมาก)