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

MySQL में SELECT DISTINCT को तेज कैसे करें?

इंडेक्स बनाकर SELECT DISTINCT परफॉरमेंस सुधारना

SELECT DISTINCT क्वेरी को तेज करने का सबसे प्रभावी तरीका संबंधित कॉलम पर INDEX बनाना है।

टेबल बनाना

CREATE TABLE DemoTable (Name VARCHAR(40));

इंडेक्स बनाना

CREATE INDEX Name_Index ON DemoTable(Name);
Query OK, 0 rows affected (1.56 sec)
Records: 0  Duplicates: 0  Warnings: 0

डेटा इन्सर्ट करना

INSERT INTO DemoTable VALUES('Chris');
INSERT INTO DemoTable VALUES('Mike');
INSERT INTO DemoTable VALUES('Chris');
INSERT INTO DemoTable VALUES('Chris');
INSERT INTO DemoTable VALUES('Sam');

मौजूदा डेटा

+-------+
| Name  |
+-------+
| Chris |
| Chris |
| Chris |
| Mike  |
| Sam   |
+-------+

क्वेरी: डिस्टिंक्ट नाम

SELECT DISTINCT Name FROM DemoTable;
+-------+
| Name  |
+-------+
| Chris |
| Mike  |
| Sam   |
+-------+

क्यों इंडेक्स मदद करता है

  • इंडेक्स के बिना: फुल टेबल स्कैन + टेम्पररी टेबल + फाइलसॉर्ट
  • इंडेक्स के साथ: इंडेक्स स्कैन (पहले से सॉर्टेड) + डुप्लीकेट स्किप
  • कवरिंग इंडेक्स होने पर टेबल एक्सेस की जरूरत नहीं

अन्य ऑप्टिमाइज़ेशन टिप्स

  1. कम कॉलम चुनें: SELECT DISTINCT col1, col2 के बजाय जरूरी कॉलम ही चुनें
  2. WHERE क्लॉज पहले: फिल्टर करके रो कम करें फिर DISTINCT लागू करें
  3. LIMIT उपयोग करें: अगर केवल कुछ रिजल्ट चाहिए तो LIMIT 10
  4. EXPLAIN विश्लेषण: EXPLAIN SELECT DISTINCT ... से एक्सीक्यूशन प्लान चेक करें

कंपोजिट इंडेक्स (एकाधिक कॉलम)

CREATE INDEX idx_name_city ON DemoTable(Name, City);
SELECT DISTINCT Name, City FROM DemoTable;

चेतावनी

  • इंडेक्स इन्सर्ट/अपडेट/डिलीट को धीमा करते हैं
  • स्टोरेज स्पेस लेते हैं
  • कम कार्डिनैलिटी (कम यूनिक वैल्यू) वाले कॉलम पर इंडेक्स कम प्रभावी
  1. - MySQL में SELECT DISTINCT बनाम GROUP BY

    SELECT DISTINCT डुप्लीकेट हटाकर यूनिक वैल्यू देता है। सिंगल कॉलम पर एग्रीगेट के साथ भी उपयोगी। SELECT DISTINCT name FROM DistinctDemo ORDER BY name; -- John, Bob, David GROUP BY एक या अधिक कॉलम द्वारा ग्रुपिंग, एग्रीगेट फंक्शन (SUM, AVG, COUNT) के साथ। SELECT address, COUNT(*) FROM GroupDemo1 GROUP

  1. - MySQL में रिकर्सिव SELECT क्वेरी कैसे करें

    रिकर्सिव सेलेक्ट के लिए, आइए एक उदाहरण देखते हैं। सबसे पहले, हम एक टेबल बनाएंगे। टेबल बनाने के लिए CREATE कमांड का उपयोग किया जाता है। ); Query OK, 0 rows affected (0.61 sec) अब, हम टेबल tblSelectDemo में रिकॉर्ड्स डालेंगे। insert into tblSelectDemo values(5,Bob); Query OK, 1 row affected (0.18

  1. MySQL से अंतिम 10 रो कैसे चुनें? MySQL से अंतिम 10 रो कैसे चुनें?

    MySQL से अंतिम 10 रो चुनने के लिए, हम SELECT स्टेटमेंट और LIMIT कॉन्सेप्ट के साथ सबक्वेरी का उपयोग कर सकते हैं। निम्न एक उदाहरण है। टेबल बनाना। mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.75 sec) टेबल में रिकॉर