mysql-优化-数据类型

数据类型优化 :

 1-尽量使用可以做正确存储数据的最小数据类型(小的更快,占用更少的磁盘,内存和cpu缓存,如果无法判断存储值得数据范围,那就选择不超过范围的最小类型。

2-整型比字符操作代价更低,因为字符集和校对规则是字符比较比整型比较更复杂,

使用mysql自建类型而不是字符串来存储日期和时间

3-尽量避免null ,如果查询中包含可为NULL的列,对mysql来说很难优化,因为可为null的列使得索引、索引统计和值比较都更加复杂,坦白来说,通常情况下null的列改为not null带来的性能提升比较小,所有没有必要将所有的表的schema进行修改,但是应该尽量避免设计成可为null的列

1:数据类型:可以使用的几种整数类型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT分别使用8,16,24,32,64位存储空间。尽量使用满足需求的最小数据类型,如果可以用 TINYINT 就用 TINYINT

2:字符和字符串类型: varchar  根据实际内容保存长度

char 比 varchar 存储效率高,空间换时间,

char:

1:最大长度255,会自动删除末尾的空格

扫描二维码关注公众号,回复: 8634282 查看本文章

2:使用场景 身份证,手机号,短字符串,经常更新的字符串

varchar:

 varchar可变长度,可以设置最大长度;适合用在长度可变的属性,长度65535:

应用场景:存储文章,长度经常变,适合保存不经常变得数据。

时间类型:一般用timestamp

datetime的默认值为null,timestamp的默认值不为null,且为系统当前时间(current_timestatmp)。如果不做特殊处理,且update没有指定该列更新,则默认更新为当前时间。

datetime占用8个字节,timestamp占用4个字节。timestamp利用率更高。

二者存储方式不一样,对于timestamp,它把客户端插入的时间从当前时区转化为世界标准时间(UTC)进行存储,查询时,逆向返回。但对于datetime,基本上存什么是什么。

二者范围不一样。timestamp范围:‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’; datetime范围:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。原因是,timestamp占用4字节,能表示最大的时间毫秒为2的31次方减1,也就是2147483647,换成时间刚好是2038-01-19 03:14:07.999999。

范式:数据表没有重复的字段,但是必须要关联。

反范式:表内有其他表的数据(俗称冗余),可以避免关联,设计有效地索引

注意:一般都是范式和反范式混合使用

自然主键:就是充当主键的字段本身具有一定的含义,是构成记录的组成部分,比如学生的学号,除了充当主键之外,同时也是  学生记录的重要组成部分。

代理主键:就是充当主键的字段本身不具有业务意义,只具有主键作用,比如自动增长的ID。

注意:一般用代理主键,自然主键一般还需要表示业务数据

字符集:这是两种不同的编码,因为字节数的关系,有些国家的语言不能用latin1显示,所以一般使用utf8编码,utf8是万国语言编码,既绝大多数国家的语言都可以用utf8,

发布了143 篇原创文章 · 获赞 41 · 访问量 59万+

猜你喜欢

转载自blog.csdn.net/qq_29257691/article/details/103494768