关于mysql中时间日期类型和字符串类型的选择


Posted in MySQL onNovember 27, 2021

一、DATETIME、TIMESTAMP 的用法

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

关于mysql中时间日期类型和字符串类型的选择

1、相同点

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

2、不同点

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

 

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

3、选择

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

二、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 和数据存储总量比较好。

到此这篇关于关于mysql中时间日期类型和字符串类型的选择的文章就介绍到这了,更多相关mysql时间日期类型和字符串类型选择内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL基础(一)
Apr 05 MySQL
MySQL命令行操作时的编码问题详解
Apr 14 MySQL
新手入门Mysql--概念
Jun 18 MySQL
MySQL 聚合函数排序
Jul 16 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
MySQL利用UNION连接2个查询排序失效详解
Nov 20 MySQL
Mysql多层子查询示例代码(收藏夹案例)
Mar 31 MySQL
Innodb存储引擎中的后台线程详解
Apr 03 MySQL
MySQL批量更新不同表中的数据
May 11 MySQL
MySQL详细讲解变量variables的用法
Jun 21 MySQL
MySQL下载安装配置详细教程 附下载资源
Sep 23 MySQL
VS2019连接MySQL数据库的过程及常见问题总结
Linux7.6二进制安装Mysql8.0.27详细操作步骤
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 #MySQL
mysql timestamp比较查询遇到的坑及解决
Nov 27 #MySQL
分享mysql的current_timestamp小坑及解决
Nov 27 #MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
Nov 27 #MySQL
MySQL Innodb索引机制详细介绍
Nov 23 #MySQL
You might like
PHP中的串行化变量和序列化对象
2006/09/05 PHP
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
layui使用label标签的方法
2019/09/14 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python中关键字is与==的区别简述
2014/07/31 Python
python实现文本界面网络聊天室
2018/12/12 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
详解python中的异常捕获
2020/12/15 Python
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
生物专业个人自荐信范文
2013/11/29 职场文书
青年文明号汇报材料
2014/12/23 职场文书