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 แถว (ดีมาก)