2

我目前正在课堂上讨论数据类型charintMySQL。我们有一个由 8 个个人号码组成的电话号码。但是,我们找不到它们各自的优缺点。

我们应该使用char类型还是int类型,为什么?

4

4 回答 4

4

如果你有一个固定的大小,那么你可以使用char(8)-> 8B ,mysql在固定大小的字段上工作得更快,但是如果你选择int-> 4B 你会节省空间,而且如果你在那个字段上有一个索引,它会工作得更快字符。

您可以使用 char(8) 和 int 做一个简单的基准测试来测试写入和读取的速度

如果您有固定大小,则使用可变长度类型(如varchar 或 varbinary)是没有意义的,因为性能会降低

于 2013-04-09T07:56:27.287 回答
1

取决于您要如何表示电话号码,您是否需要区号、国家/地区代码之类的东西,您是将其保存为单列还是将其拆分?

就个人而言,我会选择用 datatype 将区号、国家代码和电话号码表示为 3 列int,因为这样可以更容易地找到一个地区的所有电话号码,依此类推。但是,如果它的唯一目的是成为一个类似字符串值,那么 char 就足够了,但是varchar如果您有多个国家/地区的电话号码,我会考虑使用 char。

于 2013-04-09T07:44:34.497 回答
1

不知道美国的具体情况,但在欧洲,国家接入码是前导 0 ,国际接入码是前导 00 或 +。所以这是使用 INT 的一个缺点,因为前导 0 会丢失。此外,您还有包含姓名的电话号码,即使这些姓名可以转换为数字,将它们保留为姓名可能会很好。这是使用 INT 的第二个缺点。最后一个缺点是您还可以拥有分机号码等。一切都支持 VARCHAR。

于 2013-04-09T07:57:38.183 回答
0

我开始VARCHAR用于存储电话号码,因为它为您提供了更多不同国家/地区格式的范围。存储很便宜。

于 2013-04-09T07:44:41.010 回答