- 論壇徽章:
- 0
|
PROCEDURE ANALYSE 通過分析select查詢結(jié)果對現(xiàn)有的表的每一列給出優(yōu)化的建議。 PROCEDURE ANALYSE的語法如下: SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])
max_elements (默認值256) analyze查找每一列不同值時所需關(guān)注的最大不同值的數(shù)量. analyze還用這個值來檢查優(yōu)化的數(shù)據(jù)類型是否該是ENUM,如果該列的不同值的數(shù)量超過了 max_elements值ENUM就不做為建議優(yōu)化的數(shù)據(jù)類型。 max_memory (默認值8192) analyze查找每一列所有不同值時可能分配的最大的內(nèi)存數(shù)量
樣例程序 ------------------------------------------------------------------------------------ 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...,并給出了改字段的優(yōu)化建議:建議將該字段的數(shù)據(jù)類型改成TINYINT(3) UNSIGNED NOT NULL。
總結(jié) 從上面這個例子我們可以看出analyze能根據(jù)目前表中的數(shù)據(jù)情況給出優(yōu)化建議。當(dāng)數(shù)據(jù)庫在生產(chǎn)環(huán)境運行 一定時間以后,開發(fā)或是DBA能參考analyze的分析結(jié)果來對表結(jié)構(gòu)做出一定的優(yōu)化。
|
|