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

ความแตกต่างระหว่าง MySQL Stored และ Virtual Generated Columns

เปรียบเทียบ Stored Generated Columns และ Virtual Generated Columns ใน 4 มิติหลัก:

1. ด้านพื้นที่ดิสก์ (Disk Space)

  • Virtual: ไม่ใช้พื้นที่ดิสก์ (คำนวณตอนอ่าน)
  • Stored: ใช้พื้นที่ดิสก์ (เก็บค่าจริงเหมือนคอลัมน์ปกติ)

2. ด้านการดำเนินการ ALTER TABLE (Operation)

  • Virtual: INPLACE Operation - เปลี่ยน Metadata เท่านั้น เร็วมาก
  • Stored: COPY Operation - ต้องอ่าน/เขียนข้อมูลทั้งตาราง ช้า ใช้ทรัพยากรมาก

3. ด้านการคำนวณ (Calculation)

  • Virtual: คำนวณ ตอนอ่าน (ON READ) - ทุกครั้งที่ SELECT, BEFORE Triggers
  • Stored: คำนวณ ตอนเขียน (ON WRITE) - ทุกครั้งที่ INSERT/UPDATE

4. เมื่อไหนควรใช้แบบไหน (When to Use)

สถานการณ์แนะนำเหตุผล
ข้อมูลเปลี่ยนแปลงบ่อย (High Write)Virtualหลีกเลี่ยง COPY operation ตอน ALTER, คำนวณตอนอ่านแทน
ข้อมูลอ่านบ่อย เขียนน้อย (Read Heavy)Storedคำนวณครั้งเดียวตอนเขียน อ่านเร็ว ไม่คำนวณซ้ำ
นิพจน์คำนวณซับซ้อน/หนักStoredไม่ให้ CPU คำนวณซ้ำทุกครั้งที่ SELECT
ต้องการ Unique Index บน Generated ColumnStoredVirtual Column ไม่รองรับ Unique Index (MySQL จำกัด)

สรุป: เลือก Virtual เป็นค่าเริ่มต้น (Default) หากต้องการประสิทธิภาพอ่านสูงและข้อมูลคงที่ ใช้ Stored