การใช้ View & Materialized View

Sharing is caring!

เมื่อทำงานกับฐานข้อมูล เรามักต้องเขียน 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

คุณสมบัติViewMaterialized 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

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *