我最近在班上讨论了MySQL中的数据类型char和int。我们有一个8个独立号码的电话号码。然而,我们找不到它们各自的优点和缺点。
我们应该使用char类型还是int类型,为什么?
发布于 2013-04-09 15:56:27
如果你有一个固定的大小,那么你可以使用char(8) -> 8B,mysql对固定大小的字段的工作速度要快得多,但如果你选择int -> 4B,你将节省空间,而且如果你对该字段建立索引,它的工作速度将比char快。
您可以执行一个简单的基准测试,使用char(8)和int测试读写速度
如果您有固定大小,则使用可变长度类型(如varchar或varbinary )没有意义,因为性能会降低
发布于 2013-04-09 15:44:34
取决于您想要如何表示电话号码,您是否需要区号、国家代码或诸如此类的内容,以及是否要将其保存为单列或将其拆分?
就我个人而言,我选择将区号、国家代码和电话号码表示为数据类型为int的3列,因为这样可以更容易地在一个区域中查找所有电话号码,依此类推。但是,如果它的唯一用途是一个类似字符串值的字符,那么字符就足够了,但是如果你有多个国家的电话号码,我会考虑使用varchar。
发布于 2013-04-09 15:57:38
我不知道美国的具体情况,但在欧洲,国内访问代码是前导0,国际访问代码是前导00或+。所以这是使用INT的一个缺点,因为前面的0会丢失。此外,您还有包含姓名的电话号码,即使这些姓名可以转换为数字,但将它们保留为姓名可能会更好。这是使用INT的第二个缺点。最后一个缺点是,您还可以有分机号码等。所有这些都有利于VARCHAR。
https://stackoverflow.com/questions/15896055
复制相似问题