博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]用PROCEDURE ANALYSE优化MYSQL表结构
阅读量:4963 次
发布时间:2019-06-12

本文共 2249 字,大约阅读时间需要 7 分钟。

本文转自:

1 此方法可以帮助决定“列是否该被重定义为更小的数据类型”

2 可以帮助决定“一个列是否仅仅包含很少的不同值,如果不同值很少,那么可以定义为enum数据类型

3 通过2个值,告诉它不要建议采用enum数据类型

(1)最大元素数 the maximum number of elements

(2)在定义中被允许的字符数 number of characters allowed in the definition

PROCEDURE ANALYSE 通过分析select查询结果对现有的表的每一列给出优化的建议。

PROCEDURE ANALYSE的语法如下:
SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])
max_elements (默认值256) analyze查找每一列不同值时所需关注的最大不同值的数量.
analyze还用这个值来检查优化的数据类型是否该是ENUM,如果该列的不同值的数量超过了

max_elements值ENUM就不做为建议优化的数据类型。

max_memory (默认值8192) analyze查找每一列所有不同值时可能分配的最大的内存数量
样例程序

1

select * from students procedure analyse();

select * from students procedure analyse(16,256);
第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;

2

------------------------------------------------------------------------------------
mysql> DESC user_account;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| USERID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| USERNAME | varchar(10) | NO | | NULL | |
| PASSSWORD | varchar(30) | NO | | NULL | |
| GROUPNAME | varchar(10) | YES | | NULL | |
+-----------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> select * from user_account PROCEDURE ANALYSE(1)\G;
*************************** 1. row ***************************
Field_name: ibatis.user_account.USERID
Min_value: 1
Max_value: 103
Min_length: 1
Max_length: 3
Empties_or_zeros: 0
Nulls: 0
Avg_value_or_avg_length: 51.7500
Std: 50.2562
Optimal_fieldtype: TINYINT(3) UNSIGNED NOT NULL
*************************** 2. row ***************************
Field_name: ibatis.user_account.USERNAME
Min_value: dfsa
Max_value: LMEADORS
.........................................................
---------------------------------------------------------------------------------------
从第一行输出我们可以看到analyze分析ibatis.user_account.USERID列最小值1,最大值103,最小长度1,
最大长度3...,并给出了改字段的优化建议:建议将该字段的数据类型改成TINYINT(3) UNSIGNED NOT NULL。
总结
从上面这个例子我们可以看出analyze能根据目前表中的数据情况给出优化建议。当数据库在生产环境运行
一定时间以后,开发或是DBA能参考analyze的分析结果来对表结构做出一定的优化。

转载于:https://www.cnblogs.com/freeliver54/archive/2012/12/05/2802560.html

你可能感兴趣的文章
[译]Python中的异步IO:一个完整的演练
查看>>
php常用扩展安装
查看>>
Android/AndroidStudio/idea使用教程之git使用(详细)(码云)
查看>>
网易游戏——两年测试工作体会
查看>>
docker知识点
查看>>
精灵图的使用
查看>>
silverlight子窗体操作数据库后刷新父窗体
查看>>
在vmware上安装kali系统
查看>>
Jmeter 基本介绍
查看>>
java实现栈
查看>>
JavaScript
查看>>
spring的controller默认是单例还是多例
查看>>
ROI
查看>>
PostgreSQL学习手册
查看>>
课后习题
查看>>
[题解]Yet Another Subarray Problem-DP 、思维(codeforces 1197D)
查看>>
RecyclerView下拉加载集合越界问题
查看>>
Trunk 实现跨交换机 VLAN 通信
查看>>
吴恩达教你如何学习机器学习
查看>>
常用的PCB库文件
查看>>