美文网首页我爱编程
mysql---表结构优化

mysql---表结构优化

作者: 躬行者_白 | 来源:发表于2018-05-15 09:35 被阅读0次

1、数据类型的选择

1.1数字类型

非万不得已不要使用DOUBLE,不仅仅只是存储长度的问题,同时还会存在精确性的问题。

固定精度的小数,也不建议使用DECIMAL,建议乘以固定倍数转换成整数存储,可以大大节省存储空间,且不会带来任何附加维护成本。

对于整数的存储,在数据量较大的情况下,建议区分开 TINYINT / INT / BIGINT 的选择,因为三者所占用的存储空间也有很大的差别,能确定不会使用负数的字段,建议添加unsigned定义。当然,如果数据量较小的数据库,也可以不用严格区分三个整数类型。

int(1) int(10)  只是显示左侧补齐0,设置zerofill才有效,对实际存储无影响。

1.2字符类型

非万不得已不要使用 TEXT 数据类型,其处理方式决定了他的性能要低于char或者是varchar类型的处理。

定长字段,建议使用 CHAR 类型,不定长字段尽量使用 VARCHAR,且仅仅设定适当的最大长度,而不是非常随意的给一个很大的最大长度限定,因为不同的长度范围,MySQL也会有不一样的存储处理。

varchar(10) varchar(100) 影响实际存储空间,指定的是存储空间

1.3时间类型

尽量使用TIMESTAMP类型,因为其存储空间只需要 DATETIME 类型的一半。如果插入时没有指定第一个TIMESTAMP列的值,MySQL则设置该列的值为当前时间。

对于只需要精确到某一天的数据类型,建议使用DATE类型,因为他的存储空间只需要3个字节,比TIMESTAMP还少。

1.4 ENUM & SET

对于状态字段,可以尝试使用 ENUM 来存放,因为可以极大的降低存储空间,而且即使需要增加新的类型,只要增加于末尾,修改结构也不需要重建表数据。

如果是存放可预先定义的属性数据呢?可以尝试使用SET类型,即使存在多种属性,同样可以游刃有余,同时还可以节省不小的存储空间。

1.5 LOB类型

强烈反对在数据库中存放 LOB 类型数据,虽然数据库提供了这样的功能,但这不是他所擅长的

2、适当拆分

大字段或者不常用的字段可以单独存放,减少IO

3、适当冗余

根据具体业务,例如被频繁join的两张表,可以进行冗余减少join的使用

4、尽量使用NOT NULL

NULL 类型比较特殊,SQL 难优化。虽然 MySQL NULL类型和 Oracle 的NULL 有差异,会进入索引中,但如果是一个组合索引,那么这个NULL 类型的字段会极大影响整个索引的效率。此外,NULL 在索引中的处理也是特殊的,也会占用额外的存放空间。

5、数据库引擎的选择

5.1myisam

  如果表对事务要求不高,同时是以查询和添加为主的,考虑myisam储存引擎(如bbs的发帖表和回复表);

5.2innodb

 对事务要求高,保存的数据都是重要的数据,建议使用innodb储存引擎(如账号表、订单表等重要的表);

5.3memory

数据变化频繁,不需要入库,同时又频繁的查询和修改,可考虑使用memory储存引擎(注意:插入的数据不会被持久化到磁盘空间,只是临时保存到了内存中,关闭了数据就会丢失);


学习之后,随时补充。。。。。。


相关文章

  • mysql---表结构优化

    1、数据类型的选择 1.1数字类型 非万不得已不要使用DOUBLE,不仅仅只是存储长度的问题,同时还会存在精确性的...

  • mysql---修改表结构

    使用ALTER TABLE修改表结构 1) 修改表名称 ALTER TABLE <表名> RENAME <新表名>...

  • 463.【数据库】Star Schema Benchmark 标

    这是Star Schema Benchmark 标准测试集优化的第二篇,前一篇提到了优化表结构。表结构优化完之后,...

  • 记一次MySQL单表区间查询优化过程

    表结构 这份表结构是优化后的表结构,和最初的表结构差别不大,最初建表默认引擎是InnoDB,没有longTime字...

  • MySQL优化框架

    1,SQL语句优化 2,索引优化 3,数据库结构优化 4,InnoDB表优化 5,MyISAM表优化 6,Memo...

  • 查询性能优化【《高性能mysql第三版》笔记】

    前言 即使库表结构再合理、索引再合适,如果查询写得很糟糕,也无法实现高性能。查询优化,索引优化,库表结构优化要齐头...

  • 【Hive】优化

    分区表的设计和优化 普通表结构问题 使用分区表可以优化上述查询问题 分桶表的设计和优化 Join问题 分桶表设计 ...

  • MySQL优化笔记(四)--表的设计与优化(单表、多表)

    前面讲了SQL优化以及索引的使用、设计优化了,那么接下来就到表的设计与优化啦!!!真实地去设计优化单表结构以及讲述...

  • MySql 表结构优化

    选择合适的数据类型 数据类型的选择,重点在于合适二字,如何确定选择的数据类型是否合适? 1、使用可以存下你的数据的...

  • MySQL进阶:表结构设计

    摘要:MySQL 表结构设计是MySQL架构设计最为基础的工作,优化表结构设计是开发规范,避免后期因为表结构设计不...

网友评论

    本文标题:mysql---表结构优化

    本文链接:https://www.haomeiwen.com/subject/zbqedftx.html