1.MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(20)和varchar(255)对应的索引长度分别为20*3(utf-8)(+2+1),255*3(utf-8)(+2+1),其中"+2"用来存储长度信息,“+1”用来标记是否为空,加载索引信息时用varchar(255)类型会占用更多的内存; (备注:当字段定义为非空的时候,是否为空的标记将不占用字节)例如,测试sql(InnoDB引擎)如下:

varchr(10)变长字段且允许NULL:10*(Character Set:utf8=3,gbk=2,latin1=1)+1(NULL)+2(变长字段)

varchr(10)变长字段且不允许NULL:10*(Character Set:utf8=3,gbk=2,latin1=1)+2(变长字段)

char(10)固定字段且允许NULL:10*(Character Set:utf8=3,gbk=2,latin1=1)+1(NULL) char(10)固定

字段且允许NULL:10*(Character Set:utf8=3,gbk=2,latin1=1)根据这个值,就可以判断索引使用情况,特别是在组合索引的时候,判断所有的索引字段都被查询用到。

2.varchar(20)与varchar(255)都是保持可变的字符串,当使用ROW_FORMAT=FIXED创建MyISAM表时,会为每行使用固定的长度空间,这样设置不同的varchar长度值时,存储相同数据所占用的空间是不一样。

通常情况下使用varchar(20)和varchar(255)保持'hello'占用的空间都是一样的,但使用长度较短的列却有巨大的优势。较大的列使用更多的内存,因为MySQL通常会分配固定大小的内存块来保存值,这对排序或使用基于内存的临时表尤其不好。同样的事情也会发生在使用文件排序或者基于磁盘的临时表的时候。

MySQL中采用类型varchar(20)和varchar(255)对性能上的影响相关推荐

  1. mysql varchar(20)_MySQL中采用类型varchar(20)和varchar(255)对性能上的影响

    MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(20)和varchar(255)对应的索引长度分别为203(utf-8)(+2+1),2553(u ...

  2. mysql数据类型double,double在数据库怎么定义 mysql中double类型在sql中用什么类型

    sql定义一个double变量怎么定义? 局部变量 声明:DECLARE @local_variable data_type @local_variable 是变量的名称.变量名必须以 at 符 (@ ...

  3. MySql中json类型的使用___mybatis存取mysql中的json

    MySql中json类型的使用 MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型.也方便了广大开发人员.但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少 ...

  4. MYSQL中 ENUM 类型

    MYSQL中 ENUM 类型的详细解释 ENUM类型 ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举. 在下列某些情况下,值也可以是空串(&quo ...

  5. MYSQL中TIMESTAMP类型的默认值

    MYSQL中TIMESTAMP类型的默认值    MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样. 1.自动UPDATE 和INSERT 到当前的时间: 表: ---------- ...

  6. python mysql写入速度加快_解决python写入mysql中datetime类型遇到的问题

    解决python写入mysql中datetime类型遇到的问题 发布时间:2020-08-31 16:46:47 来源:脚本之家 阅读:89 作者:WilliamDescant 刚开始使用python ...

  7. python mysql驱动写入datetime类型的数据_解决python写入mysql中datetime类型遇到的问题...

    刚开始使用python,还不太熟练,遇到一个datetime数据类型的问题: 在mysql数据库中,有一个datetime类型的字段用于存储记录的日期时间值.python程序中有对应的一个dateti ...

  8. mysql java 获取周_Java中获取Mysql中datetime类型的数据

    由于Java中的日期类型只有Date类型,而Mysql中即有date型,又有datetime型,当我们想要在java中获取Mysql中datetime类型的数据或向Mysql数据库中插入datetim ...

  9. mysql中Long类型日期比较大小

    项目里遇到一个功能,需要查出表中,昨天一天某个人的考勤记录. 问题本不复杂,但是表中用户打卡时间为char类型的时间戳(毫秒).这样一来比较时间范围就麻烦了许多. 还好,网上以为有脾气的博主写的文章帮 ...

最新文章

  1. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码
  2. 使用CMS垃圾收集器产生的问题和解决方案
  3. java文件流 m.jb51.net_Linux指令范例速查手册(第2版)PDF 下载
  4. 微信小程序 筛选侧边栏 全选与反全选
  5. RHQ指标的WildFly子系统
  6. java序列化写法_java-spark的各种常用算子的写法
  7. python继承super函数_Python中的super函数如何实现继承?
  8. 退出android app时界面残留影响,【Android】App 或 Activity 销毁重建的状态恢复对回调带来的影响...
  9. 深度学习:神经网络neural network
  10. 模型预测控制的缺点_基于模型预测控制的车辆纵向跟车模型分析
  11. 注意力机制论文:CCNet: Criss-Cross Attention for Semantic Segmentation及其PyTorch实现
  12. 同表父子关系 的SQL查询语句的写法
  13. Connect Four四子棋c++程序 - 用户交互(1)
  14. 2017年统计年鉴在线阅读_我在2017年阅读的内容
  15. 【论文翻译】基于分层关注和时间RNN的动态异构网络链路预测建模
  16. 抓取网易云音乐歌曲热门评论生成词云(转)
  17. 网站优化有哪些技巧,网站优化实用简易教程
  18. 计算机专业班级工作计划,网络计算机班班主任工作计划
  19. HBase的compact分析
  20. Latex 命令速查

热门文章

  1. VK Cup 2017 - Round 1
  2. 因OpenCV版本不一致所引发的报错
  3. DBUtils连接池,websocket
  4. GoldenGate安装配置
  5. Git学习总结(一)
  6. 脚本检测CDN节点资源是否与源站资源一致
  7. UVA 12219-Common Subexpression Elimination
  8. [Oracle 学习] Oracle中将查询语句执行结果导入文本文件
  9. PHP 单一入口程序
  10. C语言函数内static关键字 疑惑