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

MySQL बेंचमार्क में एकाधिक पंक्तियाँ लौटाने पर त्रुटि कैसे हल करें?


समस्या

BENCHMARK(count, expr) में expr एक **स्केलर एक्सप्रेशन** (एकल मान) होना चाहिए। यदि सबक्वेरी एकाधिक पंक्तियाँ लौटाती है, तो त्रुटि होती है:

ERROR 1242 (21000): Subquery returns more than 1 row

समाधान: एकल पंक्ति/स्केलर मान सुनिश्चित करें

सबक्वेरी को संशोधित करें ताकि यह केवल एक पंक्ति/मान लौटाए (उदाहरण के लिए LIMIT 1 या विशिष्ट WHERE क्लॉज के साथ)।

व्यावहारिक उदाहरण

टेबल बनाना

mysql> CREATE TABLE UserDemo (
    UserId INT,
    UserName VARCHAR(20),
    RegisteredCourse VARCHAR(10)
);

डेटा डालना

mysql> INSERT INTO UserDemo VALUES(1, 'John', 'Java');
mysql> INSERT INTO UserDemo VALUES(2, 'Larry', 'C');
mysql> INSERT INTO UserDemo VALUES(3, 'Carol', 'C++');
mysql> INSERT INTO UserDemo VALUES(4, 'Mike', 'C#');

गलत: एकाधिक पंक्तियाँ लौटाने वाली सबक्वेरी

mysql> SELECT BENCHMARK(1000, (SELECT RegisteredCourse FROM UserDemo));
ERROR 1242 (21000): Subquery returns more than 1 row

सही: एकल पंक्ति लौटाने वाली सबक्वेरी

mysql> SELECT RegisteredCourse FROM UserDemo WHERE UserId = 1;
+------------------+
| RegisteredCourse |
+------------------+
| Java             |
+------------------+

BENCHMARK के साथ सही उपयोग

mysql> SELECT BENCHMARK(1000, (SELECT RegisteredCourse FROM UserDemo WHERE UserId = 1));

BENCHMARK() सिंटैक्स

BENCHMARK(count, expression)
  • count — अभिव्यक्ति को दोहराने की संख्या।
  • expression — मूल्यांकन की जाने वाली स्केलर अभिव्यक्ति।
  • लौटाता है: हमेशा 0 (समय मापने के लिए उपयोग किया जाता है)।

सर्वोत्तम अभ्यास

  • सबक्वेरी में हमेशा LIMIT 1 या अद्वितीय WHERE शर्त उपयोग करें।
  • BENCHMARK केवल अभिव्यक्ति मूल्यांकन गति मापता है; I/O या लॉक नहीं।
  • प्रदर्शन परीक्षण के लिए, BENCHMARK के बजाय EXPLAIN ANALYZE (MySQL 8.0.18+) या प्रोफाइलिंग टूल्स पर विचार करें।
  1. - MySQL में कई टेबल्स से Count(*) पंक्तियों की गिनती कैसे करें?

    MySQL में एकाधिक टेबल्स से पंक्तियों की गिनती MySQL में कई टेबल्स से पंक्तियों की संख्या प्राप्त करने के लिए, आप सबक्वेरी का उपयोग करके प्रत्येक टेबल की गिनती अलग-अलग प्राप्त कर सकते हैं और फिर उन्हें एक ही परिणाम सेट में जोड़ सकते हैं। सिंटैक्स SELECT (SELECT COUNT(*) FROM yourTableName1) AS

  1. - MySQL में UNIQUE कंस्ट्रेंट से पंक्ति विशिष्टता सुनिश्चित करें

    MySQL में UNIQUE कंस्ट्रेंट (इंडेक्स) का उपयोग करके एक या अधिक कॉलम के संयोजन को अद्वितीय (unique) बना सकते हैं, जिससे डुप्लिकेट पंक्तियां रोकी जाती हैं। सिंटैक्स -- टेबल बनाते समय CREATE TABLE टेबल_नाम ( कॉलम1 टाइप, कॉलम2 टाइप, UNIQUE (कॉलम1, कॉलम2, ...) ); -- मौजूदा टेबल पर ALTER TAB

  1. - MySQL में विशिष्ट पंक्ति प्राप्त करना

    WHERE, ORDER BY और LIMIT से विशिष्ट पंक्ति चुनें टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1972 ( Section char(1), StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTable1972 values(D,Chris); ... क्वेरी: C से बड़े सेक्शन को क्रमबद्ध करके पहले 2