【MySQL入門】テーブルのストレージエンジン(MyISAM/InnoDB)を確認する方法
MySQLテーブルのストレージエンジンを確認するには?
MySQLのテーブルがMyISAMとInnoDBのどちらのストレージエンジンを使用しているかを調べたいときは、SHOW TABLE STATUSステートメントを使います。このコマンドを実行すると、テーブル名・エンジンの種類・行数・作成日時などの詳細情報を一覧形式で取得でき、結果の「Engine」列を見ることでエンジンの種類をすぐに判別できます。
データベース内の全テーブルのエンジンを表示する構文
複数のテーブル(データベース内のすべてのテーブル)の情報を一度に確認したい場合は、次の構文を使用します。
SHOW TABLE STATUS FROM データベース名;
特定のテーブルのエンジンを表示する構文
特定の1つのテーブルだけエンジンを確認したい場合は、LIKE句でテーブル名を指定します。
SHOW TABLE STATUS FROM データベース名 LIKE 'テーブル名';
実行例①:データベース内の全テーブルのエンジンを表示
ここでは、サンプルデータベース「sampleTest」に対してクエリを実行してみます。
mysql> SHOW TABLE STATUS FROM sampleTest;
実行結果は以下のとおりです。「Engine」列に注目してください。
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | datetimedemo | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 0 | 0 | NULL | 2018-12-05 09:22:54 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | primarydemo | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 0 | 0 | NULL | 2018-12-05 09:23:34 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | student | MyISAM | 10 | Dynamic | 0 | 0 | 0 | 281474976710655 | 1024 | 0 | 1 | 2018-12-05 09:22:22 | 2018-12-05 09:22:23 | NULL | utf8mb4_0900_ai_ci | NULL | | | +--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ 3 rows in set (0.19 sec)
この結果から、「datetimedemo」と「primarydemo」はInnoDB、「student」はMyISAMを使用していることがわかります。
実行例②:特定のテーブル「student」だけエンジンを表示
次に、特定のテーブルに絞り込んでクエリを実行します。
mysql> SHOW TABLE STATUS FROM sampletest LIKE 'student';
実行結果は以下のとおりです。「student」テーブルの情報だけが表示されます。
+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | student | MyISAM | 10 | Dynamic | 0 | 0 | 0 | 281474976710655 | 1024 | 0 | 1 | 2018-12-05 09:22:22 | 2018-12-05 09:22:23 | NULL | utf8mb4_0900_ai_ci | NULL | | | +---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ 1 row in set (0.00 sec)
補足:information_schemaを使った確認方法
SHOW TABLE STATUS以外にも、information_schemaデータベースを直接参照する方法があります。必要な列だけを抽出できるため、結果がすっきりして読みやすくなります。
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'sampleTest';
また、MySQL 5.5以降ではInnoDBがデフォルトのストレージエンジンとなっているため、特に指定しない限り新規作成されるテーブルはInnoDBになります。トランザクション処理が必要なテーブルなのか、高速な全文検索向けのMyISAMが適しているのかなど、用途に応じてエンジンを意識して設計しましょう。
まとめ
- 全テーブルのエンジンを確認する:
SHOW TABLE STATUS FROM データベース名; - 特定テーブルだけ絞り込む:
SHOW TABLE STATUS FROM データベース名 LIKE 'テーブル名'; - 結果の「Engine」列を見れば、MyISAMかInnoDBかが一目でわかる
- 必要な列だけ欲しい場合は
information_schema.TABLESの参照も有効
-
MySQLで最新のIDを持つレコードを表示する方法
MySQLのテーブルから、最も新しいID(最大のAUTO_INCREMENT値)を持つレコードを取得したい場面はよくあります。この記事では、サンプルテーブルを作成し、ORDER BY句とLIMIT句を組み合わせることで、最新のIDを持つレコードを表示する手順を解説します。 1. サンプルテーブルの作成 まず、以下のようにテーブルを作成します。IdカラムはAUTO_INCREMENT付きの主キーとして定義します。 mysql> create table DemoTable676( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Nu
-
MySQLテーブルのストレージエンジンを変更する方法
MySQLでは、ALTER TABLE文を使うことで、既存テーブルのストレージエンジンを簡単に変更できます。例えば、MyISAMで作成したテーブルをInnoDBに切り替えたい場合などに役立ちます。 基本構文 alter table yourTableName ENGINE=InnoDB; yourTableName の部分に対象となるテーブル名を指定し、ENGINE= の後ろに設定したいストレージエンジン名を記述します。 サンプルテーブルの作成 まず、MyISAMエンジンを使用したテーブルを作成してみましょう。 mysql> create table DemoTable &n