Procedure Analyse优化表结构

一、Procedure Analyse

PROCEDURE ANALYSE() ,在优化表结构时可以辅助参考分析语句。通过分析select查询结果对现有的表的每一列给出优化的建议。

利用此语句,MySQL 帮你去分析你的字段和其实际的数据,并会给你一些有用的建议。

【只有表中有实际的数据,这些建议才会变得有用,因为要做一些大的决定是需要有数据作为基础的。】 

例如,如果你创建了一个 INT 字段作为你的主键,然而并没有太多的数据,那么,PROCEDURE ANALYSE()会建议你把这个字段的类型改成 MEDIUMINT 。或是你使用了一个 VARCHAR 字段,因为数据不多,你可能会得到一个让你把它改成 ENUM 的建议。这些建议,都是可能因为数据不够多,所以决策做得就不够准。 

我们在设计表时有时候总会思考到底某个字段选用什么类型呢。其实我们在后期调优时也可以使用 procedure analyse();分析表结构看看mysql给我们的字段建议,综合实际情况调整一些字段的类型(这个已经很琐碎了,一般应用都到不了这么细,并且我们鉴于经验设计的数据库基本都能满足应用。

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
.........................................................

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PROCEDURE ANALYSE() 是一种MySQL语句,用于优化结构时辅助参考分析语句。它可以根据中的实际数据给出一些建议。如果你有一个INT字段作为主键,但是数据量不大,PROCEDURE ANALYSE()可能会建议你将该字段的类型改为MEDIUMINT。或者如果你使用了一个VARCHAR字段,但是数据不多,它可能会建议你将其改为ENUM。但需要注意的是,这些建议只有在中有实际数据时才会变得准确有效。而且最终决策还是要由你自己做出。 举个例子,如果你想分析中某个字段的建议,你可以使用类似以下的语句: SELECT * FROM table_name PROCEDURE ANALYSE(max_elements, max_memory); 其中,max_elements示每列非重复值的最大值,当超过这个值时,MySQL不会推荐使用ENUM类型。而max_memory示为每列找出所有非重复值所占用的最大内存大小。 例如,使用上面的语句查询中的某个字段,MySQL会给出该字段的最小值、最大值、最小长度、最大长度、平均长度等信息,并给出优化建议。这些建议是根据当前数据情况下的分析结果给出的,只有当中的数据越来越多时,这些建议才会变得更准确可靠。因此,在使用PROCEDURE ANALYSE()的建议时,要考虑中的实际数据量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [使用procedure analyse()分析mysql给出的关于结构优化建议](https://blog.csdn.net/weixin_33672109/article/details/91769161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Mysql优化-Procedure_Analyse优化结构](https://blog.csdn.net/ty_hf/article/details/54895466)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值