文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MYSQL(三)数据类型的优化选择

2024-04-02 19:55

关注

整数类型:

Tinyint-8

Smallint-16

Mediumint-24

Int-32

Bigint-64


实数类型(带有小数部分的数字)

Float-4/double-8:浮点

Decimal:精确(只是存储格式,在计算中会转为double类型)

浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。


字符串类型:

Varchar:可变长字符串(需要1-2个字节存储字符串长度)

优点:比定长类型节约空间;

缺点:碎片问题。字符串update变长时,一个行的占用空间变长,但是在页内没有更多空间存储,MYISAM将行拆成不同片段存储,InnoDB分裂页使行可以放进页内;

适用:字符串最大长度比平均长度大很多;列的更新很少;

Char:定长字符串(mysql会删除所有末尾空格)

优点:不易产生碎片

适用:存储密码的MD5值;经常变更的数据;


大型数据类型:

Blob:二进制

Text:字符

特殊性:mysql将blob和text值当做一个独立的对象处理,当值太大时,innodb在值内存储一个指针,外部存储区域存储实际的值;mysql对blob和text的排序,只对每列的最前max_sort_length进行排序;mysql不能将列的全部长度字符串进行索引,也不能使用这些索引进行排序;


枚举类型ENUM:

mysql在存储枚举类型时非常紧凑;

Mysql在内部会将每个值在列表中的位置保存为整数,并且在表的.frm文件中保存“数字-字符串”的映射关系的查找表;

缺点:字符串列表是固定的,添加或删除字符串都需要alter table;

优点:可以缩小表的大小;主键减小后,innodb表的非主键索引也会变小;

关联速度:enum列 关联 enum列  >  varchar列 关联 varchar列  >  enum列 关联 varchar列


日期时间类型:

Datetime:8字节;与时区无关;保存大范围的值,从1001年到9999年,精度为秒;

Timestamp(尽量使用):4字节;依赖于时区;保存1970.1.1以来的秒数;列默认为not null;


Timestamp的特殊性:如果插入数据时没有指定第一个timestamp列的值,mysql则设置这个值为当前时间;


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯