परिचय
MySQL का EXPLAIN कीवर्ड क्वेरी निष्पादन योजना (execution plan) दिखाता है, जिससे आप समझ सकते हैं कि 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)
Records: 0 Duplicates: 0 Warnings: 0
डेटा डालना
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 का उपयोग
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)
महत्वपूर्ण कॉलम व्याख्या
| कॉलम | अर्थ |
|---|---|
id | SELECT पहचानकर्ता |
select_type | SIMPLE, PRIMARY, SUBQUERY, आदि |
table | संदर्भित टेबल |
type | जॉइन प्रकार: system, const, eq_ref, ref, range, index, ALL |
possible_keys | उपयोग किए जा सकने वाले इंडेक्स |
key | वास्तव में उपयोग किया गया इंडेक्स |
key_len | उपयोग की गई कुंजी की लंबाई |
ref | कुंजी के साथ तुलना किए जाने वाले कॉलम/स्थिरांक |
rows | परीक्षण की जाने वाली अनुमानित पंक्तियों की संख्या |
filtered | शर्त द्वारा फ़िल्टर की गई पंक्तियों का प्रतिशत |
Extra | अतिरिक्त जानकारी (Using where, Using index, आदि) |
इस उदाहरण में
type: ref- इंडेक्स लुकअप का उपयोग (अच्छा)key: emp_name_index- हमारा बनाया इंडेक्स उपयोग हुआrows: 1- केवल 1 पंक्ति स्कैन हुई (इष्टतम)
EXPLAIN क्वेरी ऑप्टिमाइजेशन के लिए अनिवार्य उपकरण है।