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

หาตารางที่มีคอลัมน์มากที่สุดใน MySQL ด้วย INFORMATION_SCHEMA

เมื่อต้องการทราบว่าตารางไหนในฐานข้อมูลมีจำนวนคอลัมน์มากที่สุด (หรือน้อยที่สุด) สามารถสืบค้นจาก INFORMATION_SCHEMA.COLUMNS ได้อย่างง่ายดาย

คำสั่งหาตารางคอลัมน์มากที่สุด

mysql> SELECT TABLE_NAME, COUNT(*) as TOTAL_COUNT 
FROM INFORMATION_SCHEMA.COLUMNS 
GROUP BY TABLE_NAME 
ORDER BY TOTAL_COUNT DESC 
LIMIT 1;

ตัวอย่างผลลัพธ์

+-----------------------------------+-------------+
| TABLE_NAME                        | TOTAL_COUNT |
+-----------------------------------+-------------+
| table_lock_waits_summary_by_table | 68          |
+-----------------------------------+-------------+

คำสั่งหาตารางคอลัมน์น้อยที่สุด

mysql> SELECT TABLE_NAME, COUNT(*) as TOTAL_COUNT 
FROM INFORMATION_SCHEMA.COLUMNS 
GROUP BY TABLE_NAME 
ORDER BY TOTAL_COUNT ASC 
LIMIT 1;

ตัวอย่างผลลัพธ์

+-----------------------+-------------+
| TABLE_NAME            | TOTAL_COUNT |
+-----------------------+-------------+
| removenullrecordsdemo | 1           |
+-----------------------+-------------+

คำอธิบายหลักการทำงาน

  • INFORMATION_SCHEMA.COLUMNS - View ที่เก็บข้อมูลเมตาของคอลัมน์ทุกตาราง
  • GROUP BY TABLE_NAME - จัดกลุ่มตามตาราง
  • COUNT(*) - นับจำนวนคอลัมน์ต่อตาราง
  • ORDER BY ... DESC/ASC - เรียงจากมากไปน้อย / น้อยไปมาก
  • LIMIT 1 - เอาแค่อันดับหนึ่ง

คำสั่งขยาย: ทอป 10 ตารางคอลัมน์มากที่สุด

SELECT TABLE_NAME, COUNT(*) as COLUMN_COUNT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
GROUP BY TABLE_NAME
ORDER BY COLUMN_COUNT DESC
LIMIT 10;

ประโยชน์

  • วิเคราะห์โครงสร้างฐานข้อมูล (Schema Analysis)
  • หาตารางที่ซับซ้อนเกินไป ควร Refactor
  • Audit และ Documentation
  • Performance Tuning - ตารางคอลัมน์มากอาจต้องการ Vertical Partitioning