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を選択するのが一般的な判断基準となります。
-
Windowsのセーフモードとは?3種類のセーフモードの違いと使い分け方を解説
この記事では、Windowsのセーフモードとは何か、そしてセーフモードにはどのような種類があるのか(通常のセーフモード、ネットワーク付きセーフモード、コマンドプロンプト付きセーフモード)について、それぞれの意味と違いをわかりやすく解説します。 多くのWindowsユーザーにとって、セーフモードは馴染みのある機能でしょう。Windowsの不具合を診断したりトラブルシューティングを行ったりする際に、セーフモードでの起動が求められることがよくあります。ここでは、セーフモードの意味と、Windowsが提供しているセーフモードの種類について詳しく見ていきましょう。 Windows 11/10におけるセー
-
Windowsのセーフモードとは?3種類のセーフモードの違いと使い方を徹底解説
本記事では、Windowsのセーフモードとは何か、そしてセーフモードにはどのような種類があるのか——「セーフモード」「ネットワークありのセーフモード」「コマンドプロンプトありのセーフモード」——について、それぞれの意味と違いをわかりやすく解説します。 多くのWindowsユーザーにとって、セーフモードは馴染みのある機能でしょう。Windowsの不具合を診断したりトラブルシューティングを行ったりする際に利用することが多いからです。これまでの記事では、セーフモードでWindowsを起動する方法や、セーフモードへの直接再起動の手順をご紹介してきました。今回は改めて、セーフモードの仕組みと、Wind