Virtual Generated Column คำนวณค่า "บนอากาศ" (On-the-fly) ตอนอ่านข้อมูล ไม่เก็บค่าลงดิสก์ ไม่ต้องระบุ VIRTUAL ก็ได้ (เป็นค่าเริ่มต้น)
ตัวอย่าง: สร้างตาราง triangle พร้อม Virtual Column SideC
mysql> CREATE TABLE triangle(
SideA DOUBLE,
SideB DOUBLE,
SideC DOUBLE AS (SQRT(SideA * SideA + SideB * SideB))
);
Query OK, 0 rows affected (0.44 sec)
mysql> DESCRIBE triangle;
+-------+--------+------+-----+---------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------------------+
| SideA | double | YES | | NULL | |
| SideB | double | YES | | NULL | |
| SideC | double | YES | | NULL | VIRTUAL GENERATED |
+-------+--------+------+-----+---------+-------------------+
ทดสอบเพิ่มและอ่านข้อมูล
mysql> INSERT INTO triangle(SideA, SideB) VALUES(1,1), (3,4), (6,8); Query OK, 3 rows affected (0.15 sec) mysql> SELECT * FROM triangle; +-------+-------+--------------------+ | SideA | SideB | SideC | +-------+-------+--------------------+ | 1 | 1 | 1.4142135623730951 | | 3 | 4 | 5.291502622129181 | | 6 | 8 | 10.583005244258363 | +-------+-------+--------------------+
ความแตกต่างจาก Stored: ค่า SideC ไม่ได้เก็บจริงในดิสก์ คำนวณใหม่ทุกครั้งที่ SELECT ใช้พื้นที่ดิสก์น้อยกว่า แต่ใช้ CPU มากกว่าตอนอ่าน