MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLに保存されたGENERATEDCOLUMNSは、数式でどのように機能しますか?


これは、「triangle_stored」という名前のテーブルに保存された生成列を作成する例を使用して説明できます。保存された生成列は、キーワード「stored」を使用して生成できることがわかっています。

mysql> Create table triangle_stored(SideA DOUBLE, SideB DOUBLE, SideC DOUBLE AS (SQRT(SideA * SideB + SideB * SideB)) STORED);
Query OK, 0 rows affected (0.47 sec)

mysql> Describe triangle_stored;
+-------+--------+------+-----+---------+------------------+
| Field | Type   | Null | Key | Default | Extra            |
+-------+--------+------+-----+---------+------------------+
| SideA | double | YES  |     | NULL    |                  |
| SideB | double | YES  |     | NULL    |                  |
| SideC | double | YES  |     | NULL    | STORED GENERATED |
+-------+--------+------+-----+---------+------------------+
3 rows in set (0.00 sec)

mysql> INSERT INTO triangle_stored(SideA, SideB) Values(1,1),(3,4),(6,8);
Query OK, 3 rows affected (0.09 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> Select * from triangle_stored;
+-------+-------+--------------------+
| SideA | SideB | SideC              |
+-------+-------+--------------------+
|     1 |     1 | 1.4142135623730951 |
|     3 |     4 | 5.291502622129181  |
|     6 |     8 | 10.583005244258363 |
+-------+-------+--------------------+
3 rows in set (0.00 sec)

  1. MySQLに保存されているGENERATEDCOLUMNSは、MySQLの仮想GENERATED COLUMNSとどのように異なりますか?

    以下は、MySQLに保存されたGENERATEDCOLUMNSとMySQLの仮想GENERATEDCOLUMNSの基本的な違いです- ディスク容量に関して ディスク容量の点で違いが見られる場合、仮想的に生成された列はディスク容量を使用しません。一方、保存された生成された列はディスク領域を占有します。 操作の観点から 操作の点で違いが見られる場合、仮想生成列はINPLACE操作です。つまり、すべてのデータを再度コピーしなくても、テーブル定義が変更されます。一方、保存された生成された列はコピー操作であり、テーブルに新しい列を追加するのと同じコストがかかります。 計算の観点から 仮想的に生成された列

  2. MySQLに保存されたGENERATEDCOLUMNSは、組み込み関数とどのように連携できますか?

    これは、「employee_data_stored」という名前のテーブルに保存された生成列を作成する例を使用して説明できます。保存された生成列は、キーワード「stored」を使用して生成できることがわかっています。 例 mysql> Create table employee_data_stored(ID INT AUTO_INCREMENT PRIMARY KEY, First_name VARCHAR(50) NOT NULL, Last_name VARCHAR(50) NOT NULL, FULL_NAME VARCHAR(90) GENERATED ALWAYS AS(CONC