MySQL 的procedure analyse()
函数是个挺实用的小工具,适合用来表结构有没有优化空间。你只要简单一跑,它就能根据字段的实际数据给出推荐的字段类型,挺聪明的,像是了个懂行的顾问给你提建议。
procedure analyse()的玩法其实简单,基本格式就是:SELECT * FROM 表名 PROCEDURE ANALYSE(最大值数, 最大内存)
。参数max_elements
控制建议ENUM
类型时最多考虑多少个不同值,max_memory
则是整个过程用的内存上限。
比如你有个叫t1
的表,直接来一句:
SELECT * FROM t1 PROCEDURE ANALYSE(10, 1024);
MySQL 就会乖乖地给你每个字段的建议类型,连字段的最小值、最大值、平均值都出来,省去你手动扒数据的烦恼。
实际用下来,analyse()
比较适合用在数据量中等的表上,字段多一点也没关系。对于那种历史遗留字段乱的表,它能帮你快速发现哪些字段其实用不上VARCHAR(255)
那么长,搞不好还能缩点表空间呢。
哦对了,这玩意儿只是给建议,不会自动修改表结构,你看完结果自己判断要不要改就好。用完一次你就知道,它蛮适合开发初期做字段设计,也适合上线后定期体检表结构。
如果你平时也经常为字段类型纠结,不妨试试这个procedure analyse()
,挺省事的。