Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

หาจำนวนแถวในตาราง MySQL

ใช้ information_schema.tables ดู TABLE_ROWS (ประมาณการสำหรับ InnoDB) หรือ COUNT(*) (แม่นยำ)

วิธีที่ 1: information_schema (ประมาณการ, เร็ว)

SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'your_db' AND TABLE_NAME = 'your_table';

วิธีที่ 2: COUNT(*) (แม่นยำ, ช้ากว่า)

SELECT COUNT(*) FROM your_table;

ตัวอย่างการใช้งาน

1. สร้างตารางและข้อมูล 4 แถว

mysql> CREATE TABLE DemoTable (LastName VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES ('Smith'), ('Miller'), ('Taylor'), ('Brown');

2. ดูจาก information_schema (ฐานข้อมูล web)

mysql> SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES 
    -> WHERE TABLE_SCHEMA = 'web' AND TABLE_NAME = 'DemoTable';

ผลลัพธ์

+------------+
| TABLE_ROWS |
+------------+
| 4          |
+------------+

ข้อแตกต่างสำคัญ

วิธีความแม่นยำความเร็วหมายเหตุ
TABLE_ROWSประมาณ (InnoDB)เร็วมากอัปเดตไม่ทันที
COUNT(*)แม่นยำ 100%ช้า (Full Scan)InnoDB ไม่เก็บ Count ไว้
COUNT(1)แม่นยำ 100%เท่า COUNT(*)MySQL optimize ให้เหมือนกัน

MyISAM: TABLE_ROWS แม่นยำ 100%

MyISAM เก็บจำนวนแถวไว้ใน Metadata → TABLE_ROWS แม่นยำและเร็ว

เคล็ดลับ: ใช้ Trigger นับแถว (ถ้าต้องการแม่นยำและเร็ว)

CREATE TABLE table_stats (table_name VARCHAR(64) PRIMARY KEY, row_count BIGINT);
-- Trigger AFTER INSERT/DELETE อัปเดต table_stats