MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでテーブルの平均行長(AVG_ROW_LENGTH)を取得する方法

MySQLでテーブルの平均行長を取得する方法

MySQLでテーブルの平均行長(Average Row Length)を確認したい場合は、システムビューの INFORMATION_SCHEMA.TABLES を利用するのが一般的です。このビューには、テーブルの行数・データ長・平均行長など、さまざまな統計情報が格納されており、SQLクエリだけで簡単に参照できます。

ここでは、実際にサンプルテーブルを作成し、データを挿入したうえで、平均行長を取得するまでの手順を順番に解説します。

1. サンプルテーブルの作成

まず、以下のクエリを実行してテーブルを作成します。

mysql> create table Client_information
-> (
-> Id int,
-> Name varchar(10)
-> );
Query OK, 0 rows affected (0.48 sec)

2. レコードの挿入

次に、INSERTコマンドを使ってテーブルにレコードを追加していきます。

mysql> insert into Client_information values(1,'Larry');
Query OK, 1 row affected (0.14 sec)

mysql> insert into Client_information values(2,'Mike');
Query OK, 1 row affected (0.17 sec)

mysql> insert into Client_information values(3,'Sam');
Query OK, 1 row affected (0.19 sec)

3. 挿入したレコードの確認

SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select * from Client_information;

実行結果は以下のとおりです。

+------+-------+
| Id | Name |
+------+-------+
| 1 | Larry |
| 2 | Mike |
| 3 | Sam |
+------+-------+
3 rows in set (0.00 sec)

4. 平均行長の取得

平均行長を取得するには、information_schema.tables を参照します。以下のクエリを実行してください。

mysql> select * from information_schema.tables where table_name='Client_information';

実行結果の「AVG_ROW_LENGTH」列に、そのテーブルの平均行長が表示されます。

+---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+---------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE | VERSION | ROW_FORMAT | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | MAX_DATA_LENGTH | INDEX_LENGTH | DATA_FREE | AUTO_INCREMENT | CREATE_TIME | UPDATE_TIME | CHECK_TIME | TABLE_COLLATION | CHECKSUM | CREATE_OPTIONS | TABLE_COMMENT |
+---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+---------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+
| def | sample | client_information | BASE TABLE | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | NULL | 2019-03-11 20:02:40 | NULL | NULL | utf8_general_ci | NULL | | |
| def | test | client_information | BASE TABLE | InnoDB | 10 | Dynamic | 3 | 5461 | 16384 | 0 | 0 | 0 | NULL | 2019-04-03 02:28:31 | 2019-04-03 02:29:00 | NULL | utf8mb4_0900_ai_ci | NULL | | |
+---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+---------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+
2 rows in set (0.13 sec)

必要な列だけを抽出して見やすくする

上記のように全列を表示すると出力が非常に長くなるため、実務では必要な列だけを選択するのがおすすめです。以下のように書けば、平均行長をすっきりと確認できます。

mysql> SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS, AVG_ROW_LENGTH
-> FROM information_schema.tables
-> WHERE table_name = 'Client_information';

注意点:InnoDBのAVG_ROW_LENGTHは概算値

InnoDBストレージエンジンの場合、AVG_ROW_LENGTH や TABLE_ROWS は統計情報に基づく概算値であり、厳密な値とは限りません。より正確な数値を把握したい場合は、事前に ANALYZE TABLE を実行して統計情報を最新化してから確認するとよいでしょう。

  1. MySQLで最後に作成されたテーブル名(最新)を取得するクエリの書き方

    INFORMATION_SCHEMA.TABLESを使って最新のテーブル名を取得する方法MySQLで「最後に作成されたテーブル」の名前を取得したい場合は、INFORMATION_SCHEMA.TABLESを利用します。この情報スキーマには、データベース内のすべてのテーブルに関するメタデータ(テーブル名、作成日時など)が格納されており、create_timeで並べ替えることで、最新のテーブルを簡単に特定できます。ここからは、実際にサンプルテーブルを作成し、最新のテーブル名を取得する手順を見ていきましょう。1. サンプルテーブルの作成まず、今回の例で使うテーブルを作成します。このテーブルが「最新の

  2. MySQLでテーブルから特定の行を抽出するクエリの書き方

    MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),