mysql vatchar(20) varchar(200)的区别 mysql varchar(20) varchar(200) 在存放字符数为10位的数据的时候 有什么区别?ps: 今天遇到的一个面试题很费解 请大家知晓一二 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没区别 varchar里面的数字只表示最大的字符数 我也是如是说的 可是面试官说有区别 肯定是有区别的 大概解释的意思是:select 在读数据的时候 先读的是表结构的定义,定义的是20 和200 长度 在内存中分配的长度就是分别为20 和200 …… 只能说明面试你的人是个白痴 CHAR还是他说的那种区别 我也是如是说的 可是面试官说有区别 肯定是有区别的 大概解释的意思是:select 在读数据的时候 先读的是表结构的定义,定义的是20 和200 长度 在内存中分配的长度就是分别为20 和200 ……这个,还是跟具体实现相关的。按定长进行内存预分配。但也有可能是按变长进行动态分配,那就是一样的了。 如果建在这个列上,一个的key_length=200,一个是00,,200的索引文件肯定要大一些,搜索要慢一些,mysql在做搜索时,索引长度越短越快. 从存储而来说,就是没有区别,都是varchar,只要存放的内容一样,所占用的就是一样。其他层面上,那要看怎么问了。非要较真,20跟200就是区别,数字不一样 有人是这样说的:在磁盘上存储占的空间是一样的。在内存中varchar是按照最长的方式在内存中进行操作的。如进行排序的时候,varcahr(200)是按照200这个长度来进行的。 字符集相同的情况下,存储没有区别,如果在此基础上加index,那就要看index的长度是否一样 一个最大长度的区别,这个应该没什么好问的,如果他问 char(20) 和 varcha(20)有什么区别,还可以写点东西出来。 执行效率上,varchar(20)速度快点吧。 有区别,varchar20最多能容纳20个字符,而varchar200能最多容纳200个,所以你在放入10个字符的时候,varchar200所占的内存就相对多些 我也是如是说的 可是面试官说有区别 肯定是有区别的 大概解释的意思是:select 在读数据的时候 先读的是表结构的定义,定义的是20 和200 长度 在内存中分配的长度就是分别为20 和200 ……这个,还是跟具体实现相关的。按定长进行内存预分配。但也有可能是按变长进行动态分配,那就是一样的了。+1 当数据为char(20)类型时,不管插入的值的长度是多少所占用的存储空间都是20,而varchar(200)所对应的数据所占用为实际长度加1 你应该思考下:假设没区别,那么 varchar 都定义为最长就好了,省得以后放不下还要调整表结构 呵呵,估计我的答案是对的。针对目前的mysql版本(早期的不考虑了),vrachar(200)比 vrachar(20)在存储10字节数据时,每条记录会多占用1个字节。mysql varchar 实际存储占用N+1或者N+2字节,其中N是实际数据,1或者2是实际数据的长度,vrachar(20)是1,vrachar(200)是2。1字节能表示的最大长度是255,为什么vrachar(200)需要2字节长度标识。因为这里的200是字符,不是字节。vrachar(200)可以存200汉字或者数字或者字母,这样实际最大长度是600,所以定义vrachar(200)的话,会用2字节标识长度。 MySQL主从服务器自动同步的一个方案,请大虾们指出不足之处,谢谢! 急急急,关于mysqlcc管理mysql的出现的常规问题 存储过程异常无法回滚——急 mysql 事务 回滚 失败 关于mysqladmin的问题,谢谢 数据库连接不上,帮忙看看!谢谢 在window下怎样备份和还原mysql数据库? 如何登录mysql服务器? 请问如何导出mysql中一个表内的几个指定字段的内容(急用!!) tomcat+jsp+mysql+例子 mysql级联查询自定义函数求指点 请教一个小结果集驱动大结果集的问题
没区别 varchar里面的数字只表示最大的字符数
我也是如是说的 可是面试官说有区别 肯定是有区别的
大概解释的意思是:select 在读数据的时候 先读的是表结构的定义,定义的是20 和200 长度 在内存中分配的长度就是分别为20 和200 ……
我也是如是说的 可是面试官说有区别 肯定是有区别的
大概解释的意思是:select 在读数据的时候 先读的是表结构的定义,定义的是20 和200 长度 在内存中分配的长度就是分别为20 和200 ……
这个,还是跟具体实现相关的。按定长进行内存预分配。但也有可能是按变长进行动态分配,那就是一样的了。
我也是如是说的 可是面试官说有区别 肯定是有区别的
大概解释的意思是:select 在读数据的时候 先读的是表结构的定义,定义的是20 和200 长度 在内存中分配的长度就是分别为20 和200 ……
这个,还是跟具体实现相关的。按定长进行内存预分配。但也有可能是按变长进行动态分配,那就是一样的了。
+1
1或者2是实际数据的长度,vrachar(20)是1,vrachar(200)是2。1字节能表示的最大长度是255,为什么vrachar(200)需要2字节长度标识。
因为这里的200是字符,不是字节。vrachar(200)可以存200汉字或者数字或者字母,
这样实际最大长度是600,所以定义vrachar(200)的话,会用2字节标识长度。