メモリー上に一時的に作成出来るテーブルで、HEAPテーブルと呼ばれる。以下の特徴がある。
- メモリ内に作成されるのでアクセスが非常に早い
- 他のクライアントからでも参照ができる
- ユニークなインデックスを持たせる事ができない
- 固定長のフィールドだけを扱う事ができる
- BLOB、TEXT型は使用出来ない
- AUTO_INCREMENTは使用出来ない
- NULLを許しているフィールドにインデックスを張れない
- インデックスは=と<=>の比較演算子が使用されたときだけ使用される
- テーブルの作成は、CREATE TABLE ・・・・ TYPE=HEAP
- テーブルの破棄は、DROP TABLE
使用例
mysql> create table test type=heap select id,os from test11;
ERROR 1050: Table 'test' already exists
mysql> create table test12 type=heap select id,os from test11;
Query OK, 7 rows affected (0.00 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> select * from test12;
+------+-----------------------+
| id | os |
+------+-----------------------+
| 1 | Linux |
| 2 | Solaris |
| 3 | Linux,Solaris |
| 4 | Windows |
| 5 | Linux,Windows |
| 6 | Solaris,Windows |
| 7 | Linux,Solaris,Windows |
+------+-----------------------+
7 rows in set (0.00 sec)
mysql> drop table test12;
Query OK, 0 rows affected (0.00 sec)
オプション
使用するメモリの量を制限したい場合は、MAX_ROWSオプションを指定する。
mysql> create table test12 ( i int, c char(255) ) type=heap max_rows=999;
Query OK, 0 rows affected (0.00 sec)
max_heap_table_size変数で指定された値より大きなサイズのHEAPテーブルは作成出来ない。max_heap_table_size変数は、mysqldかsafe_mysqld(mysqld_safe)に-O max_heap_table_size=10Mのようにして与える変数で、現在の値を確認するには、シェルで以下のように確認するか、
$ /usr/local/mysql/bin/mysqladmin variables
+---------------------+-----------+
| Variable_name | Value |
+---------------------+-----------+
| max_heap_table_size | 16777216 |
+---------------------+-----------+
(注)実際には様々な変数の値が出力されます
mysql>プロントから、以下のSHOW文を発行する。
mysql> show variables;
+---------------------+-----------+
| Variable_name | Value |
+---------------------+-----------+
| max_heap_table_size | 16777216 |
+---------------------+-----------+
(注)実際には様々な変数の値が出力されます
MySQL/テーブル型