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

ประเภทของ MySQL Generated Columns: Virtual และ Stored

MySQL มี Generated Columns 2 ประเภทหลัก แตกต่างกันที่การเก็บรักษาข้อมูลและเวลาคำนวณ

1. VIRTUAL GENERATED COLUMN (ค่าเริ่มต้น)

  • ไม่ใช้พื้นที่ดิสก์ - ไม่เก็บค่าจริง
  • คำนวณ ตอนอ่าน (ON READ) - ทุกครั้งที่ SELECT
  • เป็น INPLACE operation - เพิ่ม/ลบคอลัมน์เร็ว ไม่ต้องเขียนข้อมูลใหม่
  • ระบุ VIRTUAL หรือ ไม่ระบุก็ได้ (Default)

ตัวอย่าง

CREATE TABLE triangle(
  SideA DOUBLE,
  SideB DOUBLE,
  SideC DOUBLE AS (SQRT(SideA * SideA + SideB * SideB))
);
-- SideC จะเป็น VIRTUAL GENERATED

2. STORED GENERATED COLUMN

  • ใช้พื้นที่ดิสก์ - เก็บค่าจริงเหมือนคอลัมน์ปกติ
  • คำนวณ ตอนเขียน (ON WRITE) - ตอน INSERT/UPDATE
  • เป็น COPY operation - เพิ่ม/ลบคอลัมน์ช้า ต้องเขียนข้อมูลทั้งตารางใหม่
  • ต้องระบุ STORED อย่างชัดเจน

ตัวอย่าง

CREATE TABLE triangle_stored(
  SideA DOUBLE,
  SideB DOUBLE,
  SideC DOUBLE AS (SQRT(SideA * SideA + SideB * SideB)) STORED
);
-- SideC จะเป็น STORED GENERATED

ตารางเปรียบเทียบ

คุณสมบัติVIRTUALSTORED
พื้นที่ดิสก์ไม่ใช้ใช้
เวลาคำนวณตอน READตอน WRITE
ALTER TABLEINPLACE (เร็ว)COPY (ช้า)
เหมาะสำหรับข้อมูลเปลี่ยนบ่อย / คำนวณเบาข้อมูลเปลี่ยนน้อย / คำนวณหนัก