【SQL调优】MYSQL使用PROCEDURE ANALYSE()优化表结构
2017-02-09 10:52
399 查看
PROCEDURE ANALYSE() 会让 MySQL 帮你去分析你的字段和其实际的数据,并会给你一些有用的建议。只有表中有实际的数据,这些建议才会变得有用,因为要做一些大的决定是需要有数据作为基础的。
语法:
语法:
SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([[code]max_elements,[
max_memory]])[/code]
max_elements(默认值256) analyze查找每一列不同值时所需关注的最大不同值的数量.[/code]
analyze还用这个值来检查优化的数据类型是否该是ENUM,如果该列的不同值的数量超过了 [code] max_elements值
ENUM就不做为建议优化的数据类型
。
max_memory(默认值8192) analyze查找每一列所有不同值时可能分配的最大的内存数量[/code]
例: 有一个表结构如下:
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代表了表结构建议,
可以根据数据分析建议来修改表结构,使之更符合数据存储规范。
相关文章推荐
- MYSQL使用SQL语句生成表结构文档语句
- MySQL优化:使用慢查询日志定位效率较低的SQL语句
- mysql 开发进阶篇系列 3 SQL 优化(索引使用方法)
- MySql使用全记录6 -----MySQL批量SQL插入性能优化
- mysql使用Profiling分析query语句,sql语句性能优化
- MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适
- MySQL查询不使用索引汇总 + 如何优化sql语句
- MYSQL调优4-优化sql
- Mysql性能优化----SQL语句优化、索引优化、数据库结构优化、系统配置优化、服务器硬件优化
- [MySQL优化] -- 如何使用SQL Profiler 性能分析器
- mysql sql优化实例1(force index使用)
- 使用procedure analyse()分析mysql给出的关于表结构的优化建议
- 总结mysql不使用索引情况以及如何优化sql语句
- 使用SQL调优顾问的关键在于获取需要优化的SQL在执行时对应的sql id
- mysql5.7官网直译SQL语句优化--行结构表达式的优化
- MYSQL语句调优:SQL优化总结
- mysql里sql优化和表结构优化
- mysql使用explain优化sql语句
- MySql中使用Sql语句修改表的结构(不断更新)
- 使用procedure analyse()分析mysql给出的关于表结构的优化建议