INNODB_VIRTUAL
テーブルは、InnoDB
virtual generated columns および仮想生成カラムのベースとなるカラムに関するメタデータを提供します。
仮想生成カラムの基になるカラムごとに、INNODB_VIRTUAL
テーブルに行が表示されます。
INNODB_VIRTUAL
テーブルには、次のカラムがあります:
-
TABLE_ID
仮想カラムに関連付けられたテーブルを表す識別子 (
INNODB_TABLES.TABLE_ID
と同じ値)。 -
POS
virtual generated column の位置値。 カラムの順序番号と順序位置がエンコードされるため、値は大きくなります。 値の計算に使用される式では、ビット単位の演算が使用されます:
((nth virtual generated column for the InnoDB instance + 1) << 16) + the ordinal position of the virtual generated column
たとえば、
InnoDB
インスタンスの最初の仮想生成カラムがテーブルの 3 番目のカラムである場合、式は(0 + 1) << 16) + 2
です。InnoDB
インスタンスの最初の仮想生成カラムは常に数値 0 です。 テーブルの 3 番目のカラムとして、仮想生成カラムの順序位置は 2 です。 序数の位置は 0 からカウントされます。 -
BASE_POS
仮想生成カラムのベースとなるカラムの順序位置。
例
mysql> CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
`c` int(11) GENERATED ALWAYS AS (a+b) VIRTUAL,
`h` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_VIRTUAL
WHERE TABLE_ID IN
(SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_TABLES
WHERE NAME LIKE "test/t1");
+----------+-------+----------+
| TABLE_ID | POS | BASE_POS |
+----------+-------+----------+
| 98 | 65538 | 0 |
| 98 | 65538 | 1 |
+----------+-------+----------+
メモ
-
次のテーブルに示すように、定数値が virtual generated column に割り当てられている場合、そのカラムのエントリは
INNODB_VIRTUAL
テーブルに表示されません。 エントリを表示するには、仮想生成カラムにベースカラムが必要です。CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) GENERATED ALWAYS AS (5) VIRTUAL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ただし、このようなカラムのメタデータは
INNODB_COLUMNS
テーブルに表示されます。 このテーブルをクエリーするには
PROCESS
権限が必要です。INFORMATION_SCHEMA
COLUMNS
テーブルまたはSHOW COLUMNS
ステートメントを使用して、データ型やデフォルト値など、このテーブルのカラムに関する追加情報を表示します。