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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    对比MySQL中int、char以及varchar的性能

    网络上有许多似是而非的“谣言”,当然都不是恶意,绝大部分都是开发者不愿意自己主动研究,反而轻信其他人的信口之言。

    关于数据库的谣言也有不少,比如“int性能比char高很多”。

    我最近针对int、long、char、varchar进行了一次性能测试,发现它们其实并没有太大的性能差距:

    备注:c8=char(8), s8=varchar(8), i8=(bigint), c4=char(4), s4=varchar(4), i4=char(4)

    100w行无索引情况下查询:

    执行[c8查询]20次, 平均耗时312.0ms
    执行[s8查询]20次, 平均耗时334.3ms
    执行[i8查询]20次, 平均耗时276.95ms
    执行[c4查询]20次, 平均耗时354.95ms
    执行[s4查询]20次, 平均耗时340.45ms
    执行[i4查询]20次, 平均耗时291.1ms

    创建索引:

    c8索引耗时2439ms
    s8索引耗时2442ms
    i8索引耗时1645ms
    c4索引耗时2296ms
    s4索引耗时2303ms
    i4索引耗时1403ms

    有索引情况下查询:

    执行[c8查询]10000次, 平均耗时0.271ms
    执行[s8查询]10000次, 平均耗时0.2354ms
    执行[i8查询]10000次, 平均耗时0.2189ms
    执行[c4查询]10000次, 平均耗时0.303ms
    执行[s4查询]10000次, 平均耗时0.3094ms
    执行[i4查询]10000次, 平均耗时0.25ms

    结论:

    无索引:全表扫描不会因为数据较小就变快,而是整体速度相同,int/bigint作为原生类型稍快12%。

    有索引:char与varchar性能差不多,int速度稍快18%

    在数据存储、读写方面,整数与等长字符串相同,varchar额外多了一个字节所以性能可能会些许影响(1/n)。

    在数据运算、对比方面,整数得益于原生支持,因此会比字符串稍快一丁点。

    若采用索引,所谓整数、字符串的性能差距更是微乎其微。

    在实际开发中,许多开发者经常使用char(1)、char(4)这样的字符串表示类型枚举,这种做法在我看来属于最佳方案,因为这种做法在存储空间、运算性能、可读性、可维护性、可扩展性方面,远胜于int、enum这种数据类型。

    您可能感兴趣的文章:
    • MySQL CHAR和VARCHAR该如何选择
    • Mysql中varchar类型一些需要注意的地方
    • MySQL CHAR和VARCHAR存储、读取时的差别
    • MYSQL中 char 和 varchar的区别
    • MySQL中字段类型char、varchar和text的区别
    • mysql varchar类型求和实例操作
    • MySQL动态修改varchar长度的方法
    • Mysql中varchar长度设置方法
    • Mysql数据库中把varchar类型转化为int类型的方法
    • mysql如何处理varchar与nvarchar类型中的特殊字符
    • 当面试官问mysql中char与varchar的区别
    上一篇:一键安装mysql5.7及密码策略修改方法
    下一篇:MySQL连接抛出Authentication Failed错误的分析与解决思路
  • 相关文章
  • 

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

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

    对比MySQL中int、char以及varchar的性能 对比,MySQL,中,int,char,以及,