3-4位字符串,用char(4)好还是var(4)呢?

jellday 2011-02-25 06:19:43
就是数字加字母,有用于搜索,3个字符或4个,不超过4个,用哪种最好?
...全文
83 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzl8146 2011-02-28
  • 打赏
  • 举报
回复
跪求给一个数量化的例子能比较出varchar(4)确实比char(4)好?
懒得去死 2011-02-28
  • 打赏
  • 举报
回复
当然是前者。
ldb2741 2011-02-28
  • 打赏
  • 举报
回复
这点是不容置疑的,论效率,定长字段比可变长字段的效率要高
rucypli 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lzl8146 的回复:]
跪求给一个数量化的例子能比较出varchar(4)确实比char(4)好?
[/Quote]
建立俩单独表空间存储的表 插入数据 然后看看物理文件大小
ACMAIN_CHM 2011-02-25
  • 打赏
  • 举报
回复
[Quote]11.4.1. CHAR和VARCHAR类型
CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数。例如,CHAR(30)可以占用30个字符。

CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。

VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。

同CHAR对比,VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。

VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。

如果分配给CHAR或VARCHAR列的值超过列的最大长度,则对值进行裁剪以使其适合。如果被裁掉的字符不是空格,则会产生一条警告。如果裁剪非空格字符,则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入。参见5.3.2节,“SQL服务器模式”。

下面的表显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:

值 | CHAR(4) | 存储需求 | VARCHAR(4) | 存储需求
'' | '????' | 4个字节 | '' | 1个字节
'ab' | 'ab??' | 4个字节 | 'ab ' | 3个字节
'abcd' | 'abcd' | 4个字节 | 'abcd' | 5个字节
'abcdefgh' | 'abcd' | 4个字节 | 'abcd' | 5个字节




请注意上表中最后一行的值只适用不使用严格模式时;如果MySQL运行在严格模式,超过列长度不的值不保存,并且会出现错误。

从CHAR(4)和VARCHAR(4)列检索的值并不总是相同,因为检索时
[/Quote]
ACMAIN_CHM 2011-02-25
  • 打赏
  • 举报
回复
用CHAR(4)

varchar(4) 中存储3位或者4位并不会比CHAR(4)省空间。
速度上CHAR固定长度要优于VARCHAR
lzl8146 2011-02-25
  • 打赏
  • 举报
回复
个人认为用varchar(4)好,可以省点空间。后面继续拍砖
如果是char(4),当你存3个字符,他会补齐。但这个是否补齐又跟sql_mode有关。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧