我目前正在课堂上讨论数据类型char
和int
MySQL。我们有一个由 8 个个人号码组成的电话号码。但是,我们找不到它们各自的优缺点。
我们应该使用char
类型还是int
类型,为什么?
如果你有一个固定的大小,那么你可以使用char(8)
-> 8B ,mysql在固定大小的字段上工作得更快,但是如果你选择int
-> 4B 你会节省空间,而且如果你在那个字段上有一个索引,它会工作得更快字符。
您可以使用 char(8) 和 int 做一个简单的基准测试来测试写入和读取的速度
如果您有固定大小,则使用可变长度类型(如varchar 或 varbinary)是没有意义的,因为性能会降低
取决于您要如何表示电话号码,您是否需要区号、国家/地区代码之类的东西,您是将其保存为单列还是将其拆分?
就个人而言,我会选择用 datatype 将区号、国家代码和电话号码表示为 3 列int
,因为这样可以更容易地找到一个地区的所有电话号码,依此类推。但是,如果它的唯一目的是成为一个类似字符串值,那么 char 就足够了,但是varchar
如果您有多个国家/地区的电话号码,我会考虑使用 char。
不知道美国的具体情况,但在欧洲,国家接入码是前导 0 ,国际接入码是前导 00 或 +。所以这是使用 INT 的一个缺点,因为前导 0 会丢失。此外,您还有包含姓名的电话号码,即使这些姓名可以转换为数字,将它们保留为姓名可能会很好。这是使用 INT 的第二个缺点。最后一个缺点是您还可以拥有分机号码等。一切都支持 VARCHAR。
我开始VARCHAR
用于存储电话号码,因为它为您提供了更多不同国家/地区格式的范围。存储很便宜。