# ว่าด้วยเรื่อง View vs. Materialized Views ต่างกันอย่างไร?

**URL:** <https://discuss.dataengineercafe.io/t/view-vs-materialized-views/742>\
**Category:** General Discussion เรื่อง Data Engineering\
**Tags:** database, data-warehouse\
**Created:** [July 27, 2024, 3:29pm UTC](https://discuss.dataengineercafe.io/t/view-vs-materialized-views/742 "2024-07-27T15:29:10Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![zkan](https://yyz1.discourse-cdn.com/flex035/user_avatar/discuss.dataengineercafe.io/zkan/32/2_2.png) [@zkan](https://discuss.dataengineercafe.io/u/zkan)\
**Post date:** [July 27, 2024, 3:29pm UTC](https://discuss.dataengineercafe.io/t/view-vs-materialized-views/742/1 "2024-07-27T15:29:10Z")

</div>

หลายคนอาจจะได้ยินคำว่า Materialized View กัน แล้วอาจจะนึกว่ามันคือ View ปกติหรือเปล่า อันนี้ต้องบอกว่าไม่ใช่ครับ มันมีความต่างกัน

### ต่างกันอย่างไร?

View เหมือนเป็น Virtual Table ที่ไม่มีเก็บ Physical Data ไว้เลย ดังนั้นเวลาที่เราเรียก View เมื่อไหร่ เราก็จะไปดึงข้อมูลทุกครั้ง

ส่วน Materialized View นี่ เราอาจจะมองว่ามันคือลูกผสมระหว่าง View กับ Table ก็ได้นะ คือมันจะคล้าย ๆ กับ View แต่ต่างตรงที่ว่า Materialized View จะเก็บ Result ที่ได้มาไว้ใน Table จริง ๆ (Physical Data) จนกว่าจะมีการ Refresh ดังนั้นเวลาที่เราใช้ Materialized View เราก็จะต้องคิดเรื่องการ Refresh ด้วย

### Use Case ในงานใช้งานล่ะ?

- View ใช้ตอนที่เราไม่ค่อยได้ Access ข้อมูล แต่ว่าข้อมูลในตารางมีการอัพเดทอยู่บ่อยครั้ง
- ส่วน Materialized View ใช้ตอนที่เรา Access ข้อมูลบ่อย ๆ แต่ว่าข้อมูลใน Table ไม่ค่อยได้ถูกอัพเดท

ส่วนใหญ่เราจะใช้ Materialized View เหมือนเป็น Cache ของข้อมูลที่เรา Join มาแล้ว หรือเอามาประมวลผลแล้วนั่นเอง ซึ่งก็จะทำให้เราดึงข้อมูลได้รวดเร็วขึ้น

### เราต้องมาคอย Refresh ข้อมูล?

ถ้าเอาจริง ๆ ก็ใช่ อย่างไรก็ดี Data Warehouse หรือ Database ส่วนใหญ่จะมีกระบวนการนี้โดยอัตโนมัติกันอยู่แล้ว

- อย่างของ [BigQuery ก็จะ Refresh ตอนที่ Base Table มีการอัพเดท](https://cloud.google.com/bigquery/docs/materialized-views-intro)
- ส่วนของ [ClickHouse ก็เช่นกัน จะ Refresh ตอนที่มีข้อมูลใหม่เข้ามาที่ Base Table](https://clickhouse.com/docs/en/sql-reference/statements/create/view#materialized-view) ซึ่ง[ในอนาคต เราจะสามารถตั้งเวลา Refresh ได้](https://clickhouse.com/docs/en/sql-reference/statements/create/view#refreshable-materialized-view)

ใครที่กำลังมองหาวิธีเพิ่มความเร็วในการดึงข้อมูลอยู่ การใช้ Materialized View ก็เป็นตัวเลือกที่น่าสนใจอยู่นะครับ 😉

---

<div class="post-metadata">

**Author:** ![zkan](https://yyz1.discourse-cdn.com/flex035/user_avatar/discuss.dataengineercafe.io/zkan/32/2_2.png) [@zkan](https://discuss.dataengineercafe.io/u/zkan)\
**Post date:** [February 3, 2026, 9:44am UTC](https://discuss.dataengineercafe.io/t/view-vs-materialized-views/742/2 "2026-02-03T09:44:48Z")

</div>

ปัจจุบันหลาย ๆ data warehouse หรือ database สามารถที่จะทำ near real-time refresh ข้อมูลใน materialized view ได้แล้ว

เพิ่งรู้ว่าสำหรับ Postgres ยังต้องทำ schedule refresh แบบ manual อยู่ แต่ถ้าอยากได้แบบ real-time incremental updates จริง ๆ ก็ลง extension [pg\_ivm](https://github.com/sraoss/pg_ivm) เพิ่มได้
