我目前正在课堂上讨论MySQL中的数据类型char
和int
。
我们有一个8个人的电话号码。但是,我们找不到每个人的利弊。
我们应该使用char
类型还是int
类型,为什么?
答案 0 :(得分:3)
如果您有固定尺寸,则可以使用char(8)
- >如图8B所示,对于固定大小的字段,mysql的工作速度要快得多,但如果选择int
- > 4B你将节省空间,如果你将在该字段上有一个索引,它将比char更快地工作。
您可以使用char(8)和int
执行简单的基准测试来测试写入和读取的速度如果你有一个固定的大小,那么使用 varchar或varbinary 等可变长度类型会有没有点,因为性能降低
答案 1 :(得分:1)
取决于您希望如何表示电话号码,您是否需要区号,国家/地区代码和类似内容,是否要将其保存为单个列,还是要将其拆分?
就个人而言,我会选择将区号,国家/地区代码和电话号码表示为3列,数据类型为int
,因为这样可以更轻松地找到一个区域中的所有电话号码,依此类推。但是,如果它的唯一目的是像一个字符串值,那么char就足够了,但如果你有几个国家的电话号码,我会考虑使用varchar
。
答案 2 :(得分:1)
完全不了解美国,但在欧洲,国家访问代码是领先的0,国际访问代码是领先的00或+。所以这是使用INT的一个骗局,因为领先的0将会丢失。此外,您还有包含名称的电话号码,即使这些名称可以转换为数字,也可以将它们作为名称保留。这是使用INT的第二个问题。最后一点是你也可以有分机号码等。所有人都赞成VARCHAR。
答案 3 :(得分:0)
我开始使用VARCHAR
来存储电话号码,因为它可以为您提供更多不同国家/地区的格式。存储很便宜。