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

MySQL टेबल में पंक्तियों की गिनती का सबसे तेज़ तरीका?

MySQL में पंक्तियाँ गिनने के कई तरीके हैं, जिनके प्रदर्शन में बड़ा अंतर हो सकता है।

तरीके और प्रदर्शन तुलना

क्वेरीविवरणप्रदर्शन
SELECT COUNT(*) FROM tableसभी पंक्तियाँ गिनता है (InnoDB में फुल टेबल स्कैन)धीमा (बड़े टेबल पर)
SELECT COUNT(1) FROM tableCOUNT(*) के समान, कोई अंतर नहींधीमा
SELECT COUNT(column) FROM tableकेवल गैर-NULL मान गिनता हैधीमा
SHOW TABLE STATUS LIKE 'table'अनुमानित गिनती (InnoDB में सटीक नहीं)बहुत तेज़
SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES...अनुमानित गिनतीतेज़
ट्रिगर + काउंटर टेबलसटीक रीयल-टाइम गिनतीसबसे तेज़ पढ़ने के लिए

उदाहरण: COUNT(*) बनाम SHOW TABLE STATUS

mysql> SELECT COUNT(*) FROM RowCountDemo;
+----------+
| COUNT(*) |
+----------+
| 10       |
+----------+
1 row in set (0.00 sec)

mysql> SHOW TABLE STATUS LIKE 'RowCountDemo';
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| Name         | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation          | Checksum | Create_options | Comment |
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| RowCountDemo | InnoDB | 10      | Dynamic    | 10   | 1638           | 16384       | 0               | 0            | 0         | NULL           | 2018-10-18 13:14:30 | NULL                | NULL       | utf8mb4_unicode_ci | NULL     |                |         |
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+

Rows कॉलम अनुमानित गिनती दिखाता है (InnoDB में सटीक नहीं)।

सटीक गिनती के लिए सर्वोत्तम अभ्यास

  1. छोटे/मध्यम टेबल: SELECT COUNT(*) FROM table - सरल और सटीक।
  2. बड़े टेबल (लाखों+ पंक्तियाँ): काउंटर टेबल + ट्रिगर बनाएं।
  3. अनुमानित गिनती स्वीकार्य है: SHOW TABLE STATUS या INFORMATION_SCHEMA।

काउंटर टेबल पैटर्न

CREATE TABLE table_counts (
    table_name VARCHAR(64) PRIMARY KEY,
    row_count BIGINT UNSIGNED NOT NULL DEFAULT 0
);

-- ट्रिगर INSERT/DELETE पर काउंटर अपडेट करते हैं

नोट

MyISAM में COUNT(*) तात्कालिक होता है क्योंकि पंक्ति गिनती मेटाडेटा में स्टोर होती है। InnoDB में MVCC के कारण ऐसा नहीं होता।

  1. Java का उपयोग करके MySQL टेबल में कॉलम की संख्या गिनना Java का उपयोग करके MySQL टेबल में कॉलम की संख्या गिनना

    ResultSetMetaData का उपयोग करके कॉलम मेटाडेटा प्राप्त करना इसके लिए ResultSetMetaData का उपयोग करें। पहले एक टेबल बनाते हैं: CREATE TABLE DemoTable ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName VARCHAR(20), StudentLastName VARCHAR(20) ); Query OK, 0 rows affect

  1. - MySQL में COUNT(*) से टेबल की पंक्ति संख्या प्राप्त करने का सबसे आसान तरीका

    MySQL में टेबल की पंक्ति संख्या गिनने का सबसे सरल और मानक तरीका COUNT(*) एग्रीगेट फ़ंक्शन है। सिंटैक्स SELECT COUNT(*) FROM टेबल_नाम; उदाहरण 1. टेबल बनाएं CREATE TABLE DemoTable1575 (FirstName VARCHAR(20)); 2. डेटा डालें INSERT INTO DemoTable1575 VALUES(Chris), (Bob), (Adam), (Robert); 3. पंक

  1. - MySQL में एक ही INSERT से बड़ी संख्या में पंक्तियाँ तेज़ी से डालें

    बड़ी संख्या में पंक्तियाँ डालने का सबसे तेज़ तरीका एक ही INSERT स्टेटमेंट में कई मान सूचियाँ देना है। यह नेटवर्क राउंड-ट्रिप और पार्सिंग ओवरहेड को कम करता है। सिंटैक्स INSERT INTO yourTableName VALUES (NULL, val1, val2), (NULL, val1, val2), ... N पंक्तियाँ; टेबल बनाएं mysql> CREATE TABLE DemoT