select バイト数 from テーブル名 のようなことができるような気がします。
「テーブルのバイト数を調べる」というのは、実際にテーブルのデータやインデクスの格納のため、どれくらいハードディスクを占有しているかということでいいのでしょうか?
ストレージエンジンによる違いや、情報がどのタイミングで反映されるかといったことがあるかと思いますが、一つの方法としては次のような方法で得ることができます。
SQLで得たいということなら、MySQL 5.0以降であれば、information_schema.tables表を検索
MySQL :: MySQL 5.1 リファレンスマニュアル :: 21.2 INFORMATION_SCHEMA TABLES テーブル
SHOW文でいいなら、SHOW TABLE STATUS
MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.4.27 SHOW TABLE STATUS 構文
スキーマ情報を取得したいということですよね。以下の方法で可能だと思います。
show table status from DB名 like 'テーブル名';
もしくは、
select DATA_LENGTH from INFORMATION_SCHEMA TABLES where like 'テーブル名';
これを実行すると、Data_lengthというカラムを取得できます。そこに、テーブルのサイズがバイトで格納されています。
【1】情報スキーマ
MySQL5以降は情報スキーマを使って必要な情報だけを取得でき便利になっています
http://dev.mysql.com/doc/refman/5.1/ja/partitions-table.html
DATA_LENGTH:この分割あるいはサブ分割に保存されたすべての行の全長でバイトで表します。― つまり分割およびサブ分割に保存されたバイトの総数です。
SELECT Data_length,Index_length FROM information_schema.tables WHERE table_name = 'テーブル名';
【2】専用のコマンド
無関係の情報まで出てきますので情報スキーマよりも使い勝手は劣りますが、
古いバージョンでも使えますし、ちょっと使うだけなら便利です
SHOW TABLE STATUS LIKE 'テーブル名検索パターン';
情報スキーマの場合はフィールド名に違いがあるため置き換える場合は下記のような具合になります
SELECT TABLE_NAME Name, Engine, Version, Row_format, TABLE_ROWS Rows, Avg_row_length, Data_length, Max_data_length, Index_length, Data_free, Auto_increment, Create_time, Update_time, Check_time, TABLE_COLLATION Collation, Checksum, Create_options, TABLE_COMMENT Comment FROM information_schema.tables WHERE table_name LIKE 'テーブル名検索パターン';
コメント(0件)