• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    简单了解mysql存储字段类型查询效率

    检索性能从快到慢的是(此处是听人说的):

    解释(转载):

    整数类型

    1、TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,分别用8,16,24,32,64存

    2、整数都有UNSIGNED可选属性 (拿tinyint字段来举例,unsigned后,字段的取值范围是0-255,而signed的范围是-128 - 127。 那么如果我们在明确不需要负值存在的情况下,通常是不要设置signed来支持负数的。)

    3、对于存储和计算来说INT(1)和INT(20)是相同的,INT(N)中N只是规定了一些交互工具来显示字符的个数

    字符类型

    char定长,存储效率不如varchar,对于短数据的查询优于varchar

    固定长度的。比如使用uuid作为主键,那用char应该更合适。

    NULL类型

    1、索引NULL列要额外的空间

    2、进行比较和计算时会对null值进行处理,可能导致索引失效

    所以尽量不要使用NULL 类型,多使用整数类型

    另外,时间日期数据类型

    1、不要用字符串存储日期型数据,浪费空间

    2、DATE能保存从1001到9999年,精度为秒,他把日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,使用8字节

    3、TIMESTAMP保存了从1970年以来的秒数,和Unix时间戳相同,只能保存1970到2038,使用4字节

    4、FROM_UNIXTIME()和UNIX_TIMESTAMP()两个函数转换日期和Unix时间戳

    5、DATE和TIMESTAMP中存的是时间,但是是哪里的时间呢???:前者不管哪里,他就是一个时间表示(与时区无关),后者是格林尼治时间。。就是说存储时DATE就按照给的时间存,TIMESTAMP则是在先根据所在时区和给的时间戳算出对应的格林尼治时间再存,访问时DATE就按照他存的时间返回,TIMESTAMP则是根据存的时间戳(看作格林尼治时间)和所在时区算出所在时区的对应时间。

    6、通常用TIMESTAMP,空间效率高

    7、MYSQL没有提供比秒更小粒度的日期和时间值,如果需要,可以用BIGINT存储微妙级别的时间戳,或用DOUBLE存储秒之后的小数部分。

    实数类型

    1、金融类要用DECIMAL

    2、DECIMAL可以保存BIGINT范围外的整数

    3、FLOAT和DOUBLE使用标准的浮点运算进行近似计算

    char 和 varchar

    1、char是定长,varchar是变长,也就是varchar节省空间(除非使用ROW——FORMAT=FIXED创建的话)

    2、因为varchar是变长的,所以UPDATE时如果长度变长,就会做额外的工作

    3、下列情况使用varchar:字符串列的最大长度比平均长度大很多;列的更新很少(所以碎片不是问题);使用了像UTF8这样的字符集(每个字符都使用不同的字节数进行存储)

    4、CHAR适用情况:很短,或者所有值都接近同一个长度(如MD5);列经常变更

    5、末尾空格问题:高版本varchar会保留末尾空格;char和低版本varchar会剔除末尾空格。

    6、CHAR(N),VARCHAR(N)中N表示字符数,而非字节数(中文字符在UTF8中占用3字节)

    7、虽然VARCHAR(N)数据类型在磁盘中存的就是他所表示的字符串的大小,但是读取到内存中的时候内存是会给他分配N*k+1or2(N=255,1;else 2;)(k根据字符集决定)

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • Mysql中批量替换某个字段的部分数据(推荐)
    • mysql 替换字段部分内容及mysql 替换函数replace()
    • mysql查询字段类型为json时的两种查询方式
    • MySQL group by对单字分组序和多字段分组的方法讲解
    • MySQL中可为空的字段设置为NULL还是NOT NULL
    • MySQL中字段类型char、varchar和text的区别
    • mysql创建存储过程实现往数据表中新增字段的方法分析
    • MySQL根据某一个或者多个字段查找重复数据的sql语句
    上一篇:MySQL5.x版本乱码问题解决方案
    下一篇:MySQL之select in 子查询优化的实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    简单了解mysql存储字段类型查询效率 简单,了解,mysql,存储,字段,