臧富祥 ^回到顶部

您的当前位置:首页 > 最新IT资讯 > MySQL > mysql优化-数据表设计

mysql优化-数据表设计

所属分类: MySQL   2020-03-18 15:56:34  编辑:admin  浏览次数 557 次

image.png

1.存储引擎的选择

Myisam: 数据文件、索引文件---更好的I/O和访问速度(全文索引)

Innodb:事务处理(ACID)(Btree/哈希)

image.png

2、选择合适的数据类型

Myisam:使用固定长度的字段

Innodb:使用varchar类型

2.1、字符串:

Char:自动删除尾部空格 ,定长

varchar:用来存储变长的东西,多出来的会被截断

image.png

image.png

整型: tinyint(1)  int(10)

注意一点:int(3)能不能存入1234 ,答案是可以3代表最小宽度,能村多少数和int有关。如果zerofill 则12前面会补0

2.2、文本:Text/blob:   

大量的删除和更新操作需要执行碎片整理(OPTIMIZE TABLE),查询时会使用临时表,很可怕

使用合成索引;

单独设计表;

2.3、小数:decimal/float/double

Decimal(10,2)

Decimal存的数可能比bigint还大,可以用来存钱,或者小数位数多的

2.4、常用字段/不常用字段

表的拆分、业务的拆分

时间一般用timestamp或者int时间戳

2.5、字符集选择

Utf-8   

2.6列属性尽量该写的都写上,比如auto_increment \default\not null \zreofill

3.选择合适的类型

3.1使用int来存时间,可以节约空间,但是在查询是需要转换

image.png

3.2使用bigint来存ip

image.png

4.三大范式

什么是三大范式:

第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。

第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。

第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.

注:关系实质上是一张二维表,其中每一行是一个元组,每一列是一个属性

image.png


随笔文章检索

随笔文章目录