PROCEDURE ANALYSE() と DESCRIBEでテーブルの妥当性を確認。


mysql> select * from TABLE911 PROCEDURE ANALYSE()\G
*************************** 1. row ***************************
Field_name: DB01.TABLE911.id
Min_value: 10
Max_value: 21
Min_length: 2
Max_length: 2
Empties_or_zeros: 0
Nulls: 0
Avg_value_or_avg_length: 15.5000
Std: 3.4521
Optimal_fieldtype: ENUM('10','11','12','13','14','15','16','17','18','19','20','21') NOT NULL
*************************** 2. row ***************************
Field_name: DB01.TABLE911.comment
Min_value: AAAAAAAAAAAAAA
Max_value: LAAAAAAAAAAAAA
Min_length: 14
Max_length: 14
Empties_or_zeros: 0
Nulls: 0
Avg_value_or_avg_length: 14.0000
Std: NULL
Optimal_fieldtype: ENUM('AAAAAAAAAAAAAA',,'LAAAAAA [HUP]
2 rows in set (0.00 sec)

mysql> desc TABLE911;
+---------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-----------------+------+-----+---------+----------------+
| id | int(4) unsigned | NO | PRI | NULL | auto_increment |
| comment | varchar(45) | NO | MUL | NULL | |
+---------+-----------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)

mysql>

【考察】
————————–
① COLUMNSはどちらもNOT NULLなのでOK

② MAX_LENGTH 14に対して、VARCHAR(45)は少し値が大きい
Field_name: DB01.TABLE911.comment
Min_value: AAAAAAAAAAAAAA
Max_value: LAAAAAAAAAAAAA
Min_length: 14
Max_length: 14
Empties_or_zeros: 0
Nulls: 0
Avg_value_or_avg_length: 14.0000

③ Min_length: 14 とMax_length:14で固定長なのでvarcharの代わりにCharでも良いかも。
反対に差が多い時はvarcharで設定。

④ マイナスの値(Negative)を利用しない時は、UNSIGNEDオプションを付けてテーブルを作成すると
   パフォーマンス的に良いといわれてます。UNSIGNEDオプションを付けた場合には負の数は
使えませんが、floatとdoubleを除いて正ので利用できる数値は2倍に広がります。


MYSQLでテーブルの状態確認では、SHOW STATUSを良く
利用するが詳細な統計情報を確認にするには以下のようなコマンドで確認する。


mysql> show table status like 'TABLE911'\G
*************************** 1. row ***************************
Name: TABLE911
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 12
Avg_row_length: 1365
Data_length: 16384
Max_data_length: 0
Index_length: 32768
Data_free: 0
Auto_increment: 22
Create_time: 2009-04-10 21:41:36
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.01 sec)

mysql>

show_status


select * from TABLE911 PROCEDURE ANALYSE();

optimise