关于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主从复制及读写分离
May 07 MySQL
详解MySQL的Seconds_Behind_Master
May 18 MySQL
MySql存储过程之逻辑判断和条件控制
May 26 MySQL
MySQL下使用Inplace和Online方式创建索引的教程
May 26 MySQL
带你学习MySQL执行计划
May 31 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
MYSQL 的10大经典优化案例场景实战
Sep 14 MySQL
mysql主从复制的实现步骤
Oct 24 MySQL
mysql下的max_allowed_packet参数设置详解
Feb 12 MySQL
MySQL数据库配置信息查看与修改方法详解
Jun 25 MySQL
postgresql如何找到表中重复数据的行并删除
May 08 MySQL
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
May 08 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
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
移动端(微信等使用vConsole调试console的方法
2019/03/05 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
python编写爬虫小程序
2015/05/14 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
优秀民警事迹材料
2014/01/29 职场文书
护士自我评价
2014/02/01 职场文书
小学数学国培感言
2014/03/10 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
财务会计实训报告
2014/11/05 职场文书
如何写辞职信
2015/05/13 职场文书