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

MySQL: นับจำนวนแถวทุกตารางในคำสั่งเดียว (INFORMATION_SCHEMA.TABLES)

คำสั่ง

SELECT TABLE_NAME, TABLE_ROWS 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'yourDatabaseName';

ตัวอย่าง (ฐานข้อมูล business)

mysql> SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'business';

ผลลัพธ์ (บางส่วน)

+--------------------------------------------------+------------+
| TABLE_NAME                                       | TABLE_ROWS |
+--------------------------------------------------+------------+
| accentsearchdemo                                 | 2          |
| add1daydemo                                      | 2          |
| addcheckconstraintdemo                           | 0          |
| addcolumntable                                   | 0          |
| addconstraintdemo                                | 2          |
| adding5hours                                     | 2          |
| addingautoincrement                              | 2          |
| addingcolumnnamedemo                             | 0          |
| addingunique                                     | 2          |
| addnotnulldemo                                   | 2          |
| agecalculationfromdatetime                       | 0          |
| ... (รวมมากมาย)                                 | ...        |
+--------------------------------------------------+------------+

ข้อควรทราบ

  • TABLE_ROWS เป็น ประมาณการ (Estimate) สำหรับ InnoDB
  • ค่าจริง: SELECT COUNT(*) FROM table (ช้ากว่า)
  • MyISAM: TABLE_ROWS แม่นยำ
  • InnoDB: อาจคลาดเคลื่อน ±10-20% ขึ้นอยู่กับ Statistics

ถ้าต้องการค่าจริงทุกตาราง

SELECT TABLE_NAME, 
       (SELECT COUNT(*) FROM `business`.`table_name`) AS ExactCount
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'business';

(ต้อง Dynamic SQL หรือเขียน Stored Procedure เพราะไม่สามารถใช้ Table Name จาก Column ได้โดยตรง)