PROCEDURE ANALYSE() 會讓 MySQL 幫你去分析你的字段和其實際的數(shù)據(jù),并會給你一些有用的建議。只有表中有實際的數(shù)據(jù),這些建議才會變得有用,因為要做一些大的決定是需要有數(shù)據(jù)作為基礎(chǔ)的。
語法:
SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])max_elements(默認(rèn)值256) analyze查找每一列不同值時所需關(guān)注的最大不同值的數(shù)量.analyze還用這個值來檢查優(yōu)化的數(shù)據(jù)類型是否該是ENUM,如果該列的不同值的數(shù)量超過了max_elements值ENUM就不做為建議優(yōu)化的數(shù)據(jù)類型。max_memory(默認(rèn)值8192) analyze查找每一列所有不同值時可能分配的最大的內(nèi)存數(shù)量例: 有一個表結(jié)構(gòu)如下: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:企業(yè)', `Acc_Status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '賬號使用狀態(tài)。1:正常使用、2:凍結(jié)', `Acc_CTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '賬號創(chuàng)建時間', `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為以上表執(zhí)行結(jié)構(gòu)分析:SELECT * FROM HK_ACCOUNT PROCEDURE ANALYSE(1);得到分析結(jié)果:從以上表格可以看出,分析出了字段最小值,最大值,最小長度,最大長度,還有最后Optimal_fieldtype代表了表結(jié)構(gòu)建議,可以根據(jù)數(shù)據(jù)分析建議來修改表結(jié)構(gòu),使之更符合數(shù)據(jù)存儲規(guī)范。
新聞熱點
疑難解答