Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में ORDER BY के साथ EXPLAIN कमांड का उपयोग

MySQL में EXPLAIN कमांड: ORDER BY क्वेरी के निष्पादन योजना का विश्लेषण

EXPLAIN कमांड MySQL क्वेरी ऑप्टिमाइज़र की निष्पादन योजना दिखाता है, जिससे आप समझ सकते हैं कि ORDER BY कैसे निष्पादित होगा और क्या इंडेक्स उपयोग होगा।

उदाहरण के साथ पूर्ण प्रदर्शन

टेबल बनाना

mysql> CREATE TABLE DemoTable606 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(100)
);

रिकॉर्ड डालना

mysql> INSERT INTO DemoTable606(FirstName) VALUES('John'), ('Robert'), ('Chris'), ('David');

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable606;

आउटपुट:

+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | John      |
| 2  | Robert    |
| 3  | Chris     |
| 4  | David     |
+----+-----------+
4 rows in set (0.00 sec)

EXPLAIN विश्लेषण: तीन परिदृश्य

1. PRIMARY KEY पर ORDER BY (इंडेक्स उपयोग)

mysql> EXPLAIN SELECT * FROM DemoTable606 ORDER BY Id;

आउटपुट:

+----+-------------+--------------+------------+-------+---------------+---------+---------+------+------+----------+-------+
| id | select_type | table        | partitions | type  | possible_keys | key     | key_len | ref  | rows | filtered | Extra |
+----+-------------+--------------+------------+-------+---------------+---------+---------+------+------+----------+-------+
| 1  | SIMPLE      | DemoTable606 | NULL       | index | NULL          | PRIMARY | 4       | NULL | 4    | 100.00   | NULL  |
+----+-------------+--------------+------------+-------+---------------+---------+---------+------+------+----------+-------+

विश्लेषण: type=index, key=PRIMARY, Extra=NULL - प्राइमरी की इंडेक्स का उपयोग करके क्रमबद्ध, कोई फाइलसॉर्ट नहीं। सबसे कुशल।

2. गैर-इंडेक्स कॉलम पर ORDER BY (फाइलसॉर्ट)

mysql> EXPLAIN SELECT * FROM DemoTable606 ORDER BY Id, FirstName;

आउटपुट:

+----+-------------+--------------+------------+------+---------------+------+---------+------+------+----------+----------------+
| id | select_type | table        | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra          |
+----+-------------+--------------+------------+------+---------------+------+---------+------+------+----------+----------------+
| 1  | SIMPLE      | DemoTable606 | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 4    | 100.00   | Using filesort |
+----+-------------+--------------+------------+------+---------------+------+---------+------+------+----------+----------------+

विश्लेषण: type=ALL (फुल टेबल स्कैन), Extra=Using filesort - इंडेक्स उपयोग नहीं, फाइलसॉर्ट आवश्यक। कम कुशल।

3. ORDER BY में RAND() (अस्थायी टेबल + फाइलसॉर्ट)

mysql> EXPLAIN SELECT * FROM DemoTable606 ORDER BY Id, RAND();

आउटपुट:

+----+-------------+--------------+------------+------+---------------+------+---------+------+------+----------+---------------------------------+
| id | select_type | table        | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra                         |
+----+-------------+--------------+------------+------+---------------+------+---------+------+------+----------+---------------------------------+
| 1  | SIMPLE      | DemoTable606 | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 4    | 100.00   | Using temporary; Using filesort |
+----+-------------+--------------+------------+------+---------------+------+---------+------+------+----------+---------------------------------+

विश्लेषण: Extra=Using temporary; Using filesort - अस्थायी टेबल बनती है, फिर फाइलसॉर्ट। सबसे कम कुशल।

EXPLAIN कॉलम व्याख्या

कॉलमअर्थ
typeजॉइन प्रकार: system > const > eq_ref > ref > range > index > ALL
keyवास्तव में उपयोग किया गया इंडेक्स
key_lenइंडेक्स की लंबाई (बाइट्स में)
rowsअनुमानित पंक्तियाँ जांची जाएंगी
Extraअतिरिक्त जानकारी: Using filesort, Using temporary, Using index, आदि

प्रदर्शन अनुकूलन टिप्स

  • ORDER BY कॉलम पर इंडेक्स बनाएं
  • WHERE और ORDER BY कॉलम को कवर करने वाला कम्पोजिट इंडेक्स बनाएं
  • बड़े डेटासेट पर ORDER BY RAND() से बचें
  • LIMIT के साथ ORDER BY उपयोग करें ताकि फाइलसॉर्ट छोटा हो
  1. - MySQL में IN() और FIELD() से सेट क्रम में SELECT करें

    IN() और FIELD() के संयोजन से कस्टम क्रम में परिणाम प्राप्त करना जब आपको विशिष्ट मानों के लिए पंक्तियां चुननी हों और उन्हें एक विशेष क्रम में दिखाना हो, तो WHERE ... IN(...) के साथ ORDER BY FIELD(...) का उपयोग करें। टेबल और डेटा CREATE TABLE DemoTable( StudentId VARCHAR(10), StudentName VAR

  1. - MySQL में ORDER BY CASE WHEN का उपयोग करके कस्टम क्रम में सॉर्ट करना

    MySQL में ORDER BY CASE: कस्टम सॉर्टिंग क्रम परिभाषित करना जब आपको डिफॉल्ट सॉर्टिंग (आरोही/अवरोही) के अलावा एक विशिष्ट क्रम में परिणाम चाहिए, तो ORDER BY CASE का उपयोग करें। उदाहरण: रंगों को कस्टम क्रम में सॉर्ट करें टेबल बनाएं: CREATE TABLE DemoTable ( Color VARCHAR(100) ); INSERT INTO DemoTa

  1. - MySQL में COALESCE से NULL पंक्ति के साथ कॉलम गुणा करें

    जब किसी संख्यात्मक कॉलम में NULL हो, तो गणना (जैसे गुणा) का परिणाम NULL हो जाता है। COALESCE() का उपयोग करके NULL को डिफ़ॉल्ट मान (जैसे 1) से बदल सकते हैं। टेबल बनाएं mysql> CREATE TABLE DemoTable1842 ( NumberOfItems INT, Amount INT ); डेटा डालें (एक पंक्ति में NULL) mysql> INSERT IN