资讯专栏INFORMATION COLUMN

一针见血,mysql中时间日期类型和字符串类型的选择

不知名网友 / 3351人阅读

摘要:和数据类型的用法在存储字符串时,可以使用或者类型相同点和都可以存储变长字符串且字符串长度上限为字节不同点速度快,不存在空间浪费,不处理尾部空格,上限为字节,但是有存储长度实际字节最大可用。

点赞再看,养成赞美的习惯,微信搜一搜【香菜聊游戏】关注我。

目录

1、DATETIME、TIMESTAMP 的用法

1、相同点

2、不同点

3、选择

2、varchar 和 text 数据类型的用法

1、相同点

2、不同点

3、选择


1、DATETIME、TIMESTAMP 的用法

MySQL中有多种表示时间日期的数据类型,主要有YEAR、TIME、DATE、DATETIME、TIMESTAMP等

1、相同点

datetime和timestamp都可以表示 YYYY-MM-DD HH:MM:SS 这种年月日时分秒格式的数据。

2、不同点

datetime存储与时区无关(准备来说是datetime只支持一个时区,就是存储时当前服务器的时区),而timestamp存储的是与时区有关。

datetime、timestamp精确度都是秒,datetime与时区无关,存储的范围广(1001-9999),timestamp与时区有关,存储的范围小(1970-2038)。

3、选择

TIMESTAMP和DATETIME除了存储范围和存储方式不一样,没有太大区别。当然,对于跨时区的业务,TIMESTAMP更为合适。

2、varchar 和 text 数据类型的用法

mysql在存储字符串时, 可以使用char、varchar或者text类型

1、相同点

varchar 和 text 都可以存储变长字符串且 字符串长度上限为65535字节

2、不同点

varchar 速度快,不存在空间浪费,不处理尾部空格,上限为65535字节,但是有存储长度实际65532字节最大可用。255字节以下用1字节存储长度,255字节以上用2字节存储长度。 text,存变长大数据,速度慢,不存在空间浪费,不处理尾部空格,上限65535字节,会用额外空间存放数据长度,顾可以全部使用65535字节。

不能在TEXT列上放置索引(全文索引除外),对于text来说,只能添加前缀索引,并且前缀索引最大只能达到1000字节

text没有默认值

当varchar大于某些数值的时候,其会自动转换为text,大概规则如下:

大于varchar(255)变为 tinytext

大于varchar(500)变为 text

大于varchar(20000)变为 mediumtext

3、选择

1、经常变化的字段用varchar;

2、知道固定长度的用char;

3、超过255字节的只能用varchar或者text;

4、能用varchar的地方不用text;

5、能够用数字类型的字段尽量选择数字类型而不用字符串类型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了;

6、存储引擎对于选择 CHAR 和 VARCHAR 的影响:

  • 对于 MyISAM 存储引擎,最好使用固定长度的数据列代替可变长度的数据列。这样可以使整个表静态化,从而使数据检索更快,用空间换时间。

  • 对于InnoDB存储引擎,最好使用可变长度的数据列,因为 InnoDB 数据表的存储格式不分固定长度和可变长度,因此使用 CHAR 不一定比使用 VARCHAR 更好,但由于 VARCHAR 是按照实际的长度存储,比较节省空间,所以对磁盘 I/O 和数据存储总量比较好。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125342.html

相关文章

  • 日期居然用符串保存?我笑了

    摘要:微信公众号后端进阶,专注后端技术分享框架分布式中间件服务治理等等。 微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 老司机倾囊相授,带你一路进阶,来不及解释了快上车! 我发现数据库有些日期居然用字符串保存?于是跟几个小伙伴讨论了关于数据库的日期应该要怎么保存的问题,其实我一直都建议直接用数值保存时间戳,为什么我要这么建议呢?...

    Leck1e 评论0 收藏0
  • 关于“时一次探索

    摘要:示例指定了也就是零时区,显示的时间会加上本地时区的偏移小时。其实就是上面显示时间时使用的形式除了能表示基本信息,还可以表示星期,但是一点也不容易读,不建议使用。 原文对 ISO 8601 时间格式中 T 和 Z 的表述有一些错误,我已经对原文进行了一些修订,抱歉给大家造成误解。 最近使用 sequelize 过程中发现一个奇怪的问题,将某个时间插入到表中后,通过 sequelize 查...

    fuyi501 评论0 收藏0
  • 关于时那些事

    摘要:获取定制时间戳的方法返回数值的单位是毫秒。返回指定日期减去时间间隔后的具体日期返回返回指定日期为全年的第几天日期二将时间戳转为普通日期时间格式当前时间戳将时间戳转为日期时间格式 PHP、JavaScript、MySQL操作时间 关于时间的那些事 PHP篇 PHP中时间操作单位是秒 一、将时间戳转为普通日期格式 //当前时间戳 time(); //当前时间格式 date(Y-m-...

    qqlcbb 评论0 收藏0

发表评论

0条评论

不知名网友

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<