เมื่อทำงานกับฐานข้อมูล เรามักต้องเขียน Query ที่ซับซ้อนซ้ำ ๆ เช่น การ Join หลายตาราง หรือการคำนวณ Aggregation ต่าง ๆ ใน PostgreSQL เรามีเครื่องมือที่ช่วยให้การจัดการ Query ง่ายขึ้น นั่นคือ View และ Materialized View ซึ่งทั้งสองมีความแตกต่างและเหมาะกับการใช้งานที่ต่างกัน
View คืออะไร?
View คือการบันทึก SQL Query ไว้เป็นตารางเสมือน (Virtual Table) เมื่อเราเรียกใช้งาน View ระบบจะรัน Query ต้นฉบับทุกครั้ง ทำให้ข้อมูลใน View เป็นข้อมูลล่าสุดเสมอ
การสร้าง View
CREATE VIEW customer_orders AS SELECT c.id, c.name, o.product, o.order_date FROM customers c JOIN orders o ON c.id = o.customer_id;
การใช้งาน View
SELECT * FROM customer_orders;
ข้อดีของ View
- ทำให้ Query ซับซ้อนอ่านง่ายขึ้น
- ซ่อนรายละเอียดตารางจริง
- ช่วยเพิ่มความปลอดภัย (Security) โดยจำกัดการเข้าถึงบางคอลัมน์
ข้อเสียของ View
- รัน Query ใหม่ทุกครั้ง อาจช้าเมื่อข้อมูลใหญ่
- ไม่เก็บผลลัพธ์จริง (Virtual)
Materialized View คืออะไร?
Materialized View คล้ายกับ View แต่ต่างกันตรงที่เก็บผลลัพธ์ของ Query ไว้จริง ทำให้การเรียกใช้งานเร็วขึ้นมาก แต่ข้อมูลจะไม่อัปเดตอัตโนมัติ ต้องใช้คำสั่ง REFRESH
การสร้าง Materialized View
CREATE MATERIALIZED VIEW top_customers AS SELECT c.id, c.name, COUNT(o.id) as total_orders FROM customers c JOIN orders o ON c.id = o.customer_id GROUP BY c.id, c.name;
การ Refresh Materialized View
REFRESH MATERIALIZED VIEW top_customers;
ข้อดีของ Materialized View
- ดึงข้อมูลเร็วขึ้น (Query หนัก ๆ เก็บไว้แล้ว)
- เหมาะสำหรับงานรายงาน (Reporting)
- ช่วยลดภาระการทำงานของ Query ซ้ำ ๆ
ข้อเสียของ Materialized View
- ข้อมูลไม่อัปเดตอัตโนมัติ
- ต้องใช้พื้นที่จัดเก็บ
- ต้อง Refresh เองเมื่อข้อมูลเปลี่ยน
ตัวอย่างการใช้งานจริง
สมมติว่าเรามีระบบ E-commerce ต้องการรายงานยอดขายประจำวัน การใช้ View จะทำให้ข้อมูลสดใหม่เสมอ แต่จะ Query ช้าเมื่อข้อมูลมาก ในขณะที่ Materialized View จะดึงข้อมูลเร็วมาก เหมาะกับการสร้าง Dashboard
การเปรียบเทียบ View และ Materialized View
คุณสมบัติ | View | Materialized View |
---|---|---|
การเก็บข้อมูล | Virtual ไม่เก็บจริง | เก็บผลลัพธ์จริง |
ความเร็ว | ช้าเมื่อ Query ซับซ้อน | เร็ว (เพราะเก็บไว้แล้ว) |
ความสดใหม่ | ข้อมูลใหม่เสมอ | ต้อง Refresh เอง |
เหมาะกับ | Query ที่ต้องการข้อมูลล่าสุด | งานรายงาน, Dashboard |

การเลือกใช้ View หรือ Materialized View
- ใช้ View → เมื่อข้อมูลต้องอัปเดตแบบ Real-time
- ใช้ Materialized View → เมื่อเน้น Performance และข้อมูลไม่ต้องอัปเดตทันที
- ระบบจริงมักใช้ผสมกัน ทั้งสองแบบ
สรุป
View และ Materialized View เป็นเครื่องมือที่ช่วยให้ Query ซับซ้อนทำงานได้ง่ายและเร็วขึ้น ความแตกต่างหลักคือ View ไม่เก็บข้อมูลจริง แต่ Materialized View เก็บผลลัพธ์ไว้ การเลือกใช้งานขึ้นอยู่กับความต้องการระหว่าง ความสดใหม่ของข้อมูล และ ประสิทธิภาพการ Query
SEO Keywords
SQL View,SQL Materialized View,PostgreSQL View,PostgreSQL Materialized View,การใช้ View,การใช้ Materialized View,SQL Reporting,SQL Dashboard