我有3个选项来存储2个字段:国家代码+电话
a( 国家代码(可以是1、2或3个字符(
b( 电话(可以是8-12位数字(
这2个字段将用于创建2字段索引:
- varchar(3(和varchar(12(
- char(3(和char(12(——但是char(12的空间浪费
- smallint和varchar(12(
- smallint和char(12(——但是char(12的空间浪费
对于索引效率,我应该选择哪一个?SmallInt+varchar会减慢索引速度,还是字符串字段应该与字符串字段配对?
感谢任何人能提供的建议。
您已经描述了两个非数字字段,每个字段最多可以有3个和12个字符。第一个选择似乎是显而易见的选择。
我说这些是非数字字段,因为值的算术和(通常(比较逻辑不遵循数字规则。在任何一个值上加1都没有意义。
此外,前导零很可能很重要。
如果您使用的是ISO 3个字符的国家/地区代码,那么您知道这些值是3个字符,并且您可以使用CHAR(3)
而不是VARCHAR(3)
。当然,smallint也是合适的。