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

การทำงานของ MySQL Virtual Generated Column กับนิพจน์คณิตศาสตร์

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 มากกว่าตอนอ่าน