【SQL調優】MYSQL使用PROCEDURE ANALYSE()優化表結構

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代表了表結構建議,
可以根據數據分析建議來修改表結構,使之更符合數據存儲規範。
	

發佈了31 篇原創文章 · 獲贊 53 · 訪問量 39萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章