2013-03-06 66 views
1

我有关于定义关系数据库中的代码的原则问题。假设(情况1)我们有一个代码,例如,国籍代码:sql数据库 - 数字或字符串数​​据类型

1 
2 
... 
23 
... 
125 
... 

什么是使用这种代码的首选数据类型(?例如INT(3)VARCHAR(3))。范围是1到999

之间

现在,假设我们再有一个数字代码(案例2),但有固定的长度,例如,4:

2342 
3252 
2641 
... 

会是怎样在这种情况下,适当的数据类型?

在这两种情况下,没有信息,就是一个数字的位置已经没有任何意义,代码只是一个区别ID。

我将不胜感激任何评论。谢谢。

+0

答案可能取决于它是否是真正国籍代码或别的东西,因为有在国际化中使用的标准缩写,例如“EN-US”。但通常你会使用某种形式的整数。 Int16,int32,smallint。取决于关系数据库中可用的内容。 – Tim 2013-03-06 11:00:09

回答

3

整数通常快于VARCHAR处理搜索,并采取了少一点空间,让我说,如果有不涉及其他因素,去为整数。

+0

非常感谢。性能是选择整数的一个很好的理由。 – giordano 2013-03-06 11:08:39

+0

@giordano当然,性能增益/损失将取决于您选择的RDBMS和“INT”类型,因此请确保自己进行测试。 – 2013-03-06 11:31:11

1

字符串较大,数据库较慢。如果你不需要像“0289”那样的东西,那么用整数。

如果性能对你很重要的话,你可以将事件其存储为整数的数据库和应用程序中的“289”就可以完成它为“0289”程序,但它实际上取决于。

数据库中的字符串索引不是首选的顺便说一句。

+0

谢谢!我将使用整数。你关于索引的陈述会产生一个问题:索引对分类变量没有意义,也就是说,它必须被转换/映射到一个整数并且索引新变量?或者索引的分类变量的性能好于非索引的,但它不是最优的,并且在非常庞大而繁忙的数据库中产生问题? – giordano 2013-03-06 11:31:25