mysql—mysql中的整数和字符串类型

mysql—mysql中的整数和字符串类型

一.为表中的字段选择合适的数据类型的原则

当一个列可以选择多种数据类型时,应该优先考虑数字类型,其次是日期或者二进制类型,最后是字符类型,对于相同级别的数据类型,应该优先选择占用空间小的数据类型
理由:
1)在对数据进行比较时,字符类型处理与当前所使用的排序规则是相关的, 而数字和二进制是按照二进制大小来进行的,同样的数据,字符类型比数字处理慢
2)在数据库中,数据处理 是以页为单位的,每页的大小是恒定的,在innodb中,每页的大小是16k,数据占用空间越小,页中能容纳的数据个数就越多,减少磁盘IO,有利于性能的提升

二.如何选择正确的整数类型

1.整数类型

在这里插入图片描述
经常被问的面试题:int(2)和int(11)有区别吗?int(2)占用的存储空间会比int(11)少吗?
答案是没区别,不会少,他们占用的存储空间都是4个字节,如果只是存储两位数的数,想要节省空间可以选用tinyint来存储

2.实数类型:

在这里插入图片描述
float和double是非精确的,非精确的含义是指在对float和double类型进行计算时,会出现误差,而使用decimal就不会,所以如果是像银行中的业务,一般需要选择decimal来存储

三.如何选择varchar和char类型

1.varchar数据类型的存储特点

1)varchar是用于存储变长的字符串,只占用必要的存储空间,例如有一个varchar(50)的列,而实际只存储了10个字符,那这个列实际就只占了10个字符
2)列的最大长度小于255则只占用一个额外的字节用于纪录字符串长度,列的最大长度大于255,则要占用两个额外字节用于纪录字符串长度

2.varchar长度的选择问题

1)使用最小的符合需求的长度,但也不能不顾实际情况,把它设计得非常的小,然后考虑等之后有需要再回来修改,这种想法是十分不正确的,在mysql5.7之前,不管是将varchar的长度改长或者改短,都会进行锁表,在5.7之后,如果原来的宽度小于255,修改后的宽度也小于255,那就不会锁表,其他情况下会锁表
2)面试题:varchar(5)和varchar(200)来存储’mysql’字符串性能相同吗?
答案是有区别的,虽然它们都不超过255,只需要5个字符加一个字节来存储就够了,但是mysql为了更有效的优化查询,在内存中对字符串使用的是固定的宽度,所以如果把列的宽度设置得太长,就会消耗内存,影响性能
3.varchar的适用场景
1)字符串列的最大长度比平均长度大很多的情况
2)字符串列很少被更新
3)使用了多字节字符集存储字符串,例如utf-8

3.char类型的存储特点

1)char类型是定长的
2)字符串存储在char类型的列中会删除末尾的空格,而字符串存在varchar类型中时末尾的空格不会被删除
3)char类型的最大宽度为255

4.char类型的使用场景

1)char适合存储长度近似的值,例如MD5值,身份证,手机号等
2)char类型适合存储短字符串,例如性别,因为varchar还要多出一个字节来存储字符串长度
3)char类型适合存储经常更新的字符串列

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2342.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 大数据可视化的方法、挑战及进展[通俗易懂]

    大数据可视化的方法、挑战及进展[通俗易懂]大数据可视化的方法、挑战及进展摘要:在简化数据量和降低大数据应用的复杂性中,大数据分析发挥着关键的作用。可视化是其中一个重要的途径,它能够帮助大数据获得完整的数据视图并挖掘数据的价值。大数据分析和可视化应该无缝连接,这样才能在大数据应用中发挥最大的功效。这篇文章将介绍一些常规的数据可视化方法以及在大数据应用领域突破常规的可视化手段,也会讨论大数据可视化带来的挑战,同时介绍大数据可视化领域新的方

  • eclipse离线安装svn插件使用教程_eclipse不显示svn插件

    eclipse离线安装svn插件使用教程_eclipse不显示svn插件【Android】Eclipsesvn插件安装说明   昨天心血来潮,因为总是有些小的测试文档修改了修改去,后来某天找代码又麻烦得很,想把本机上的所有代码管理起来,在网上度娘了下,决定在Eclipse中安装svn插件,来管理本地的源代码文档。现在附上一些安装步骤,后续的使用慢慢地摸索吧。一、安装环境:PC:windowEclipse:JunoServiceRelease

  • 下载whl文件,离线方式安装numpy包_python离线安装pip

    下载whl文件,离线方式安装numpy包_python离线安装pip一:单独下载文件1、下载whl离线文件到本地,放到c盘根目录(任意位置均可,只是方便安装)https://pypi.org/https://www.lfd.uci.edu/~gohlke/pythonlibs/(推荐用这个地址下载whl文件,国内源,速度快。ctrl+f找到自己需要的文件)2、cmd到存放whl文件的目录3、pip安装whl离线文件pipinstall****.whl(****.whl是我们下载的whl的文件名称)二、批量下载…

  • ireport使用教程_insertselective用法

    ireport使用教程_insertselective用法一、iReport与JasperReport简介1.1   简介JasperReport是报表的引擎部分,界面设计是用iReport。为什么选择这两个软件呢?因为这两个软件都是开源的,即免费的(虽然某些文档收费,但是磨灭不了我们使用它的理由)。JasperReport是一个报表制作程序,用户按照它制定的规则编写一个XML文件,然后得到用户需要输出的格式文件。它支持输出的文件格式

  • 引用类型「建议收藏」

    引用类型「建议收藏」1.引用reference有时候又称为别名(alias),它可以用作对象的另一个名字。引用类型由类型标识符和一个取地址操作符来定义引用必须被初始化例如intival=1024

  • [Cubieboard] 镜像资源汇总

    [Cubieboard] 镜像资源汇总

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号