PROCEDURE ANALYSE() 會讓 MySQL 幫你去分析你的字段和其實際的數據,並會給你一些有用的建議。只有表中有實際的數據,這些建議纔會變得有用,因爲要做一些大的決定是需要有數據作爲基礎的。
語法:
SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements
,[max_memory
]])
max_elements
(默認值256) analyze查找每一列不同值時所需關注的最大不同值的數量.
analyze還用這個值來檢查優化的數據類型是否該是ENUM,如果該列的不同值的數量超過了max_elements值
ENUM就不做爲建議優化的數據類型
。
max_memory
(默認值8192) analyze查找每一列所有不同值時可能分配的最大的內存數量
例: 有一個表結構如下:
CREATE TABLE `hk_account` ( `Acc_ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '賬號ID', `Acc_Account` varchar(20) NOT NULL COMMENT '登錄賬號', `Acc_Password` varchar(128) NOT NULL COMMENT '登錄密碼', `Acc_Salt` varchar(32) NOT NULL COMMENT '密碼加密', `Acc_Type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '賬號類型。1:管理員、2:普通用戶、3:企業', `Acc_Status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '賬號使用狀態。1:正常使用、2:凍結', `Acc_CTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '賬號創建時間', `Acc_UTime` timestamp NULL DEFAULT NULL COMMENT '賬號信息更新時間', PRIMARY KEY (`Acc_ID`), KEY `Acc_ID_Key` (`Acc_ID`) ) ENGINE=InnoDB AUTO_INCREMENT=268797 DEFAULT CHARSET=utf8
爲以上表執行結構分析:
SELECT * FROM HK_ACCOUNT PROCEDURE ANALYSE(1);
得到分析結果:
從以上表格可以看出,分析出了字段最小值,最大值,最小長度,最大長度,還有最後Optimal_fieldtype代表了表結構建議,
可以根據數據分析建議來修改表結構,使之更符合數據存儲規範。