ใช้ 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