博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySql中varchar和varchar的区别
阅读量:6786 次
发布时间:2019-06-26

本文共 653 字,大约阅读时间需要 2 分钟。

看了新公司的数据库设计,有些问题思考了一下,写这篇文章也就记录这个问题的思考过程。

首先从占用空间进行比较,varchar(10) 声明10个字节,数据保存时额外一个字节的长度前缀;varchar(1000)声明1000个字节,如果数据长度大于255,长度前缀是两个字节。而实际Varchar数据类型是根据实际的需要来分配长度的。有问题的参考这篇文章,挺有意思的一个实验,关于varchar的思考。

那么,既然主要关心磁盘占用没有问题,哪里可能出现问题

y6r5ep3gwy.jpeg
dh21hnmfxo.jpeg

意思就是说对于VARCHAR数据类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配存储空间的,但是对于内存来说,则不是。其时使用固定大小的内存块来保存值。简单的说,就是使用字符类型中定义的长度,即1000个字符空间,因为其会转换成CHAR。显然,这对于排序或者临时表(这些内容都需要通过内存来实现)作业会产生比较大的不利影响。解释可以参见这里。

(https://stackoverflow.com/questions/1151667/what-are-the-optimum-varchar-sizes-for-mysql)。

所以我们在做库表设计的时候,一些大字段参数进行业务拆表,还有就是数据库设计时候varchar(n)这个字段要合理,不能太大。

这边再贴一下这个过程中发现的一篇有趣的帖子,是关于char和varchar的

http://tech.it168.com/a2011/0426/1183/000001183173.shtml

转载地址:http://lidgo.baihongyu.com/

你可能感兴趣的文章
Java手动序列化和反序列化的实现
查看>>
一次解决你的所以省略号问题,不仅仅是:text-overflow:ellipsis
查看>>
sql报错信息
查看>>
k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)
查看>>
使用CFileFind类查找文件并获取文件图标
查看>>
我的友情链接
查看>>
VMware Workstation8虚拟机XP安装图解
查看>>
企业VLAN配置实例
查看>>
JPush极光推送Java服务器端实例
查看>>
trie 转载(来源于http://www.cnblogs.com/njuzyc/archive/2012/01/25/2329332.html)
查看>>
Office提示由于本机的限制该操作已被取消怎么办
查看>>
Google Earth网页版初探
查看>>
Mysql数据库连接池知识分享
查看>>
SpringMVC 拦截请求,判断会话是否超时
查看>>
网站前端_KindEditor.基础入门.0001.KindEditor_3.4.2快速入门?
查看>>
android拍照并通过Http发送到Java后台
查看>>
ubuntu安装nginx-1.8.0.tar.gz
查看>>
魔兽争霸3地图(WarIII Maps):妖皇传说
查看>>
grub2正确配置——硬盘安装ubuntu 9.10之后不能启动xp解决方法
查看>>
PHP isset()与empty()的使用区别详解
查看>>