เมื่อต้องการทราบว่าตารางไหนในฐานข้อมูลมีจำนวนคอลัมน์มากที่สุด (หรือน้อยที่สุด) สามารถสืบค้นจาก 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