菜鸟时代的我们当初在接到项目分析设计mysql数据库时,或多或少会借鉴于一些成熟的开源项目的数据库设计。

比如设计sns系统数据库时我们有可能会根据自己的数据库知识同时分析借鉴uchome的库结构,一个经典的例子是我在设计论坛数据库时借鉴了dz的帖子表主题表的某些字段冗余的思想,以及大字段水平拆分概念;当初并不知道为什么,更不理解有些甚至背离了数据库设计范式。随着知识的增长概念性,实际情况都在变化。慢慢的知道了一些基础知识

(这里我要推荐一本很好的mysql的书:简朝阳先生的《mysql性能调优与架构设计》,当然我只是泛读了一遍,等待深入研究中)

回归标题要说的内容,我们在设计表时有时候总会思考到底某个字段选用什么类型呢。跨过菜鸟级的phper会有相当的经验直接啪啪啪敲出来,其实我们 在后期调优时也可以使用 procedure analyse();分析表结构看看mysql给我们的字段建议,综合实际情况调整一些字段的类型(这个已经很琐碎了,一般应用都到不了这么细,并且我们 鉴于经验设计的数据库基本都能满足应用。我这里只是了解到了这些知识给自己做个记录而已)。

procedure analyse();语法如下

select column from table_name procedure analyse();

以下引用一段文章:

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查找每一列所有不同值时可能分配的最大的内存数量

样例程序

------------------------------------------------------------------------------------

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。

当然以上的东西都很基础,只是我关于近期以及之前所获知识的一个简单总结,记录;大牛们就不要笑话我了,我才刚开始起步

mysql 分析表结构_转使用procedure analyse()分析mysql给出的关于表结构的优化建议...相关推荐

  1. 使用procedure analyse()分析mysql给出的关于表结构的优化建议

    菜鸟时代的我们当初在接到项目分析设计mysql数据库时,或多或少会借鉴于一些成熟的开源项目的数据库设计. 比如设计sns系统数据库时我们有可能会根据自己的数据库知识同时分析借鉴uchome的库结构,一 ...

  2. mysql 回滚段_史上最牛分析MySQL索引机制的实现!不接受反驳

    数据库是一个只要从事后端开发,就永远离不开的技术,大部分企业选择的数据库都是MySQL,所以需要我们对MySQL有着足够的了解. 而MySQL索引,我们都知道提高性能要加索引,也知道索引的结构是B-T ...

  3. mysql delete 会锁表吗_我想进大厂之 MYSQL 夺命连环13问

    来源 | 科技缪缪 想进大厂,mysql不会那可不行,来接受mysql面试挑战吧,看看你能坚持到哪里? 能说下 myisam 和 innodb 的区别吗? myisam引擎是5.1版本之前的默认引擎, ...

  4. mysql blob 内容查看_这些被你忽视的MySQL细节,可能会让你丢饭碗!

    我们在 MySQL 入门篇主要介绍了基本的 SQL 命令.数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我 ...

  5. mysql数据库check命令_利用mysqlcheck命令快速修复mysql数据库

    表索引异常,修复msql表索引(表引擎:myisam) myisamchk --safe-recover /usr/local/mysql/data/ename_news/dede_arccache ...

  6. mysql 导出dmp文件_一文带你了解MySQL主从复制(Master-Slave)

    1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  7. mysql交叉查询教程_史上最简单的 MySQL 教程(二十六)「连接查询(上)」

    连接查询连接查询:将多张表(大于等于 2 张表)按照某个指定的条件进行数据的拼接,其最终结果记录数可能有变化,但字段数一定会增加. 连接查询的意义:在用户查询数据的时候,需要显示的数据来自多张表. 连 ...

  8. mysql数据库开发经历_六年开发经验,整理Mysql数据库技巧笔记,全网最详细的笔记集合!...

    数据库 表 DML DQL 多表查询 内连接查询 外连接查询 子查询 将一条查询语句作为一张虚拟表 Mysql约束 主键约束 特点:主键约束默认包含非空和唯一两个功能. 一张表只能有一个主键. 主键一 ...

  9. mysql数据库版本常用_推荐:经典版本常用MySQL的命令集锦_MySQL

    本文概括了网络上众多常用MySQL命令,讲述过程详细明了. 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口, ...

最新文章

  1. NLP之TFTS读入数据:TF之TFTS读入时间序列数据的几种方法
  2. ABAP--关于重复行的处理
  3. MATLAB中的wavedec、wrcoef函数简析
  4. WCF添加服务失败。服务元数据可能无法访问。请确保服务正在运行并且正在公开元数据。...
  5. 深度学习 训练吃显卡_在深度学习中喂饱GPU
  6. JavaScript ES2021 新特性解析
  7. javascript鼠标拖拽的那些事情
  8. java8 时间加一秒_Java8中新增的日期和时间API
  9. 品《阿里巴巴大数据实践-大数据之路》一书(上)
  10. 将Map转换成List
  11. 我的世界MinecraftJava版开服教程(Linux)开服器开服包下载开服网站服务器开服核心开服端开服软件mac版Java启动器
  12. 精准广告投放 —— 业务概念知识
  13. RMAN-06091 no channel allocated for maintenance
  14. 程序员每天自动填写周报日报工时脚本完整脚本(附源码)
  15. vue 数组 unshift push shift pop
  16. 南京信息工程大学第二届程序设计大赛团队赛:L-三元对
  17. 批量修改DNS记录的TTL值
  18. Gephi (网络分析软件) 下载、安装及简单使用
  19. linux git忘记密码,Linux下 保存 git账号密码
  20. 硬件电路入门---电阻2

热门文章

  1. SourceTree历史版本下载地址
  2. Computer Vision_33_SIFT:Object recognition from local scale-invariant features——1999
  3. 【愚公系列】2021年12月 攻防世界-简单题-CRYPTO-002(Caesar)
  4. 设置word只读模式的三种方式,分别如何取消只读模式?
  5. 一起来捉妖超强辅助脚本 轻松获取妖灵快速升级攻略
  6. prometheus+alertmanager实现CPU、内存、磁盘的监控报警
  7. mysql no wait_MySQL 8.0新特性 -- nowait以及skip locked
  8. # Jackson 学习使用
  9. sap一个项目如何对应多个服务器,SAP ERP连接多台PI系统配置
  10. java开发模拟退火算法解决函数最值!