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

MySQLの生成カラム(Generated Column)の種類とは?VIRTUALとSTOREDの違いを解説

MySQLの生成カラム(Generated Column)には、大きく分けて「VIRTUAL(仮想)」と「STORED(格納)」の2種類があります。それぞれ仕組みやディスク容量への影響が異なるため、用途に応じて適切に使い分けることが重要です。

VIRTUAL生成カラム(仮想生成カラム)

その名の通り、この種類の生成カラムはディスク容量を一切消費しません。カラム定義時にキーワード「VIRTUAL」を明示的に指定してもしなくても、デフォルトでは仮想カラムとして作成されます。以下の例で具体的に確認してみましょう。

mysql> Create table triangle(SideA DOUBLE, SideB DOUBLE, SideC DOUBLE AS (SQRT(SideA * SideB + 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 |
+-------+--------+------+-----+---------+-------------------+
3 rows in set (0.00 sec)

上記のDESCRIBE文の出力結果を見ると、SideCカラムのExtra欄に「VIRTUAL GENERATED」と表示されています。これにより、SideCが仮想生成カラムであることが確認できます。

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)

上記の出力結果では、SideCカラムのExtra欄に「STORED GENERATED」と表示されており、格納生成カラムとして作成されたことがわかります。

両者の違いのまとめ

  • VIRTUAL生成カラム: 値は読み取り時にその都度計算されるため、ストレージを消費しません。データのINSERTやUPDATE時のオーバーヘッドが少ないのが特徴です。
  • STORED生成カラム: 値は書き込み時に計算され、物理的に保存されます。読み取りが高速になる反面、ストレージを消費し、書き込み時に計算コストが発生します。

このように、ストレージ容量を優先するならVIRTUAL、読み取り性能を優先するならSTOREDを選択するのが一般的な判断基準となります。

  1. Windowsのセーフモードとは?3種類のセーフモードの違いと使い分け方を解説

    この記事では、Windowsのセーフモードとは何か、そしてセーフモードにはどのような種類があるのか(通常のセーフモード、ネットワーク付きセーフモード、コマンドプロンプト付きセーフモード)について、それぞれの意味と違いをわかりやすく解説します。 多くのWindowsユーザーにとって、セーフモードは馴染みのある機能でしょう。Windowsの不具合を診断したりトラブルシューティングを行ったりする際に、セーフモードでの起動が求められることがよくあります。ここでは、セーフモードの意味と、Windowsが提供しているセーフモードの種類について詳しく見ていきましょう。 Windows 11/10におけるセー

  2. Windowsのセーフモードとは?3種類のセーフモードの違いと使い方を徹底解説

    本記事では、Windowsのセーフモードとは何か、そしてセーフモードにはどのような種類があるのか——「セーフモード」「ネットワークありのセーフモード」「コマンドプロンプトありのセーフモード」——について、それぞれの意味と違いをわかりやすく解説します。 多くのWindowsユーザーにとって、セーフモードは馴染みのある機能でしょう。Windowsの不具合を診断したりトラブルシューティングを行ったりする際に利用することが多いからです。これまでの記事では、セーフモードでWindowsを起動する方法や、セーフモードへの直接再起動の手順をご紹介してきました。今回は改めて、セーフモードの仕組みと、Wind