本文章來給大家介紹一個新的命令PROCEDURE ANALYSE,他可以很對的對mysql數據庫結構進行優化,下面我來簡單介紹一下此函數用法。
PROCEDURE ANALYSE 通過分析select查詢結果對現有的表的每一列給出優化的建議。
PROCEDURE ANALYSE的語法如下:
SELECT … FROM … WHERE … PROCEDURE ANALYSE([max_elements,[max_memory]])
max_elements (默認值256) analyze查找每一列不同值時所需關注的最大不同值的數量.
analyze還用這個值來檢查優化的數據類型是否該是ENUM,如果該列的不同值的數量超過了
max_elements值ENUM就不做為建議優化的數據類型。
max_memory (默認值8192) analyze查找每一列所有不同值時可能分配的最大的內存數量
eg: SELECT * FROM web_member procedure analyse(1)
樣例程序
1
代碼如下 復制代碼 select * from students procedure analyse();第二條語句要求procedure analyse()不要建議含有多於16個值,或者含有多於256字節的enum類型,如果沒有限制,輸出可能會很長;
2
代碼如下 復制代碼------------------------------------------------------------------------------------
mysql> DESC user_account;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| USERID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| USERNAME | varchar(10) | NO | | NULL | |
| PASSSWORD | varchar(30) | NO | | NULL | |
| GROUPNAME | varchar(10) | YES | | NULL | |
+-----------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> select * from user_account PROCEDURE ANALYSE(1)G;
*************************** 1. row ***************************
Field_name: ibatis.user_account.USERID
Min_value: 1
Max_value: 103
Min_length: 1
Max_length: 3
Empties_or_zeros: 0
Nulls: 0
Avg_value_or_avg_length: 51.7500
Std: 50.2562
Optimal_fieldtype: TINYINT(3) UNSIGNED NOT NULL
*************************** 2. row ***************************
Field_name: ibatis.user_account.USERNAME
Min_value: dfsa
Max_value: LMEADORS
.........................................................
---------------------------------------------------------------------------------------
從第一行輸出我們可以看到analyze分析ibatis.user_account.USERID列最小值1,最大值103,最小長度1,
最大長度3...,並給出了改字段的優化建議:建議將該字段的數據類型改成TINYINT(3) UNSIGNED NOT NULL。