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

MySQL में COUNT DISTINCT की धीमी प्रक्रिया को कैसे तेज़ करें?

MySQL में COUNT(DISTINCT column) क्वेरी बड़े डेटासेट पर धीमी चल सकती है। इसे तेज़ करने का सबसे प्रभावी तरीका संबंधित कॉलम पर **इंडेक्स (Index)** बनाना है। इंडेक्स डेटाबेस को विशिष्ट मानों को तेज़ी से खोजने और गिनने में सक्षम बनाता है, बिना पूरी टेबल को स्कैन किए।

उदाहरण: इंडेक्स के साथ COUNT DISTINCT ऑप्टिमाइज़ करना

सबसे पहले एक डेमो टेबल बनाते हैं जिसमें FirstName और LastName पर एक कंपोजिट इंडेक्स हो:

mysql> CREATE TABLE DemoTable1905 (
    FirstName VARCHAR(20),
    LastName VARCHAR(20),
    INDEX F_L_Name (FirstName, LastName)
);

कुछ सैंपल डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable1905 VALUES
('John','Smith'),
('John','Doe'),
('Adam','Smith'),
('John','Doe'),
('Chris','Brown'),
('Adam','Smith');

टेबल का डेटा देखें:

mysql> SELECT * FROM DemoTable1905;
+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Adam      | Smith    |
| Adam      | Smith    |
| Chris     | Brown    |
| John      | Doe      |
| John      | Doe      |
| John      | Smith    |
+-----------+----------+

अब FirstName के विशिष्ट मानों को गिनें:

mysql> SELECT COUNT(DISTINCT FirstName) FROM DemoTable1905;

आउटपुट:

+---------------------------+
| count(distinct FirstName) |
+---------------------------+
| 3                         |
+---------------------------+

परफॉरमेंस टिप्स

  • इंडेक्स बनाएं: जिस कॉलम पर DISTINCT लागू हो रहा है, उस पर इंडेक्स ज़रूर बनाएं।
  • कंपोजिट इंडेक्स: अगर आप एकाधिक कॉलम पर COUNT(DISTINCT col1, col2) कर रहे हैं, तो कंपोजिट इंडेक्स बनाएं।
  • कवरिंग इंडेक्स: InnoDB में, सेकेंडरी इंडेक्स में प्राइमरी की वैल्यू शामिल होती है, इसलिए इंडेक्स-ओनली स्कैन संभव है।
  • अनुमानित गिनती: बहुत बड़ी टेबल्स के लिए, EXPLAIN या INFORMATION_SCHEMA से अनुमानित गिनती लेना तेज़ हो सकता है।

सही इंडेक्सिंग से COUNT(DISTINCT) क्वेरीज़ की परफॉरमेंस नाटकीय रूप से सुधर सकती है, खासकर जब लाखों रिकॉर्ड हों।

  1. - MySQL में ज्ञात विशिष्ट मानों की घटनाएँ गिनें

    MySQL में SUM() से विशिष्ट मानों की गणना करना ज्ञात विशिष्ट मानों की घटनाएँ गिनने के लिए बूलियन अभिव्यक्ति के साथ SUM() का उपयोग करें। टेबल बनाना और डेटा डालना mysql> CREATE TABLE DemoTable636 ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName VARCHAR(100) ); Query OK,

  1. - MySQL में विशिष्ट मान और उनकी गिनती कैसे वापस करें

    केवल विशिष्ट मान वापस करने के लिए, GROUP BY क्लॉज का उपयोग करें। पहले एक टेबल बनाते हैं: mysql> create table DemoTable754 (ProductPrice int); Query OK, 0 rows affected (0.48 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable754 values(200); Query OK, 1 ro

  1. - 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