MySQL利用procedure analyse()函数优化表结构

Mysql关系型数据库管理系统

mysql是一个开放源码的小型关联式数据库管理系统,开发者为瑞典mysql ab公司。mysql被广泛地应用在internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了mysql作为网站数据库。

不知道是否遇到过为MySQL表结构该选择什么类型字段而郁闷?或者为MySQL字段该选择多少长度而纠结?下面这篇文章就给大家介绍一个武林秘籍吧~也是我最近才学来的,感兴趣的朋友们下面来一起看看吧。

简介

procedure analyse()函数是MySQL内置的对MySQL字段值进行统计分析后给出建议的字段类型。

语法

procesure analyse(max_elements,max_memory)

max_elements

指定每列非重复值的最大值,当超过这个值的时候,MySQL不会推荐enum类型。

max_memory

analyse()为每列找出所有非重复值所采用的最大内存大小。

实战演练

# 对t1表所有的列进行分析  wing@3306>show create table t1;  +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------+  | Table | Create Table                                                                   |  +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------+  | t1  | CREATE TABLE `t1` (   `id` int(11) DEFAULT NULL,   `name` varchar(16) DEFAULT NULL,   `score` int(11) DEFAULT NULL  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |  +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------+  1 row in set (0.00 sec)  wing@3306>select * from t1 procedure analyse(4);  +---------------+-----------+-----------+------------+------------+------------------+-------+-------------------------+-------------+---------------------------+  | Field_name | Min_value | Max_value | Min_length | Max_length | Empties_or_zeros | Nulls | Avg_value_or_avg_length | Std | Optimal_fieldtype |  +---------------+-----------+-----------+------------+------------+------------------+-------+-------------------------+-------------+---------------------------+  | wing.t1.id  | 1    | 200000  |    1 |    6 |     0 |   0 | 100000.5000  | 116099.2790 | MEDIUMINT(6) UNSIGNED NOT NULL |  | wing.t1.name | 000jxc6V | zzznmkcX |     8 |     8 |      0 |   0 | 8.0000  | NULL    | CHAR(8) NOT NULL     |  | wing.t1.score | 1   | 100  |  1 | 3 |  0 |   0 | 50.4889  | 28.8768 | TINYINT(3) UNSIGNED NOT NULL  |  +---------------+-----------+-----------+------------+------------+------------------+-------+-------------------------+-------------+---------------------------+  3 rows in set (0.14 sec)

总结

以上就是关于MySQL中procedure analyse()函数的全部内容了,更多相关内容请关注PHP中文网(www.php.cn)!

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享