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

作者:laozhang 时间:2024-01-22 13:17:52 

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

关于数据库的谣言也有不少,比如“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,int,char,varchar
0
投稿

猜你喜欢

  • SQL SERVER调用存储过程小结

    2024-01-23 18:52:27
  • 详解Flask前后端分离项目案例

    2022-03-16 02:43:51
  • sql怎样显示出评论最多的文章?

    2008-08-08 12:17:00
  • 保姆级官方yolov7训练自己的数据集及项目部署详解

    2023-09-16 14:19:45
  • 用CSS实现柱状图(Bar Graph)的方法(三)——复杂柱状图的实现

    2008-05-26 13:36:00
  • 在主机商的共享服务器上部署Django站点的方法

    2021-03-20 22:41:34
  • Python Requests安装与简单运用

    2023-09-26 22:02:15
  • Python基于Opencv来快速实现人脸识别过程详解(完整版)

    2023-09-06 17:04:25
  • 用于统计项目中代码总行数的Python脚本分享

    2022-05-11 17:37:11
  • PyCharm+PyQt5+QtDesigner配置详解

    2023-09-11 12:40:03
  • 如何使用Python发送HTML格式的邮件

    2022-10-01 12:24:02
  • sql集合运算符使用方法

    2024-01-26 08:18:13
  • python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解

    2021-12-18 10:27:02
  • 瞬间的快感之细节提升用户满意度

    2010-11-17 19:19:00
  • jQuery实现AJAX定时刷新局部页面实例

    2024-05-02 17:05:27
  • mysql5.7.19 安装配置方法图文教程(win10)

    2024-01-16 03:52:10
  • 使用python无账号无限制获取企查查信息的实例代码

    2021-09-23 20:26:10
  • Python中Proxypool库的安装与配置

    2022-11-04 15:14:57
  • opencv python 基于KNN的手写体识别的实例

    2021-02-22 13:03:02
  • python装饰器初探(推荐)

    2023-01-19 14:40:27
  • asp之家 网络编程 m.aspxhome.com