sql-server – 类型字段的INT或CHAR

前端之家收集整理的这篇文章主要介绍了sql-server – 类型字段的INT或CHAR前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
表的最佳设计是什么,Type字段是int还是char(1)?换句话说,给定此架构:
create table Car
(
    Name varchar(100) not null,Description varchar(100) not null,VehType .... not null
)

为了使VehType成为int或char(1),它是否更有效(性能明智)?假设你有五种类型的汽车,你应该使用递增值0 – > 4,或类型的字符(比如说’v’,’s’,’c’,’t’,’m’)?

如果它不止于此,我将使用一个单独的Type表并具有外键关系,但我认为没有必要.

我注意到sys.objects目录视图使用类型字段的字符.这有什么理由吗?我只是在这里勉强抓住,是不是我觉得更舒服?

解决方法

你通常使用1字节的tinyint

> char(1)会稍慢,因为比较使用整理
>困惑:什么是S:SUV或Saloon or Sedan还是体育?
>在添加更多类型时使用字母限制您.见最后一点.
>我见过的每个系统都有一个以上的客户端,例如报告.将V,S变为“Van”,“SUV”等的逻辑将需要重复.使用查找表意味着它是一个简单的JOIN
> extendibility:再添加一个类型(“F”表示“Flying car”),您可以将一行添加到查找表中或更改大量代码和约束.而你的客户端代码也是因为这必须知道V,S,F等是什么
>维护:逻辑分为3个位置:数据库约束,数据库代码和客户端代码.使用查找和外键,它可以在一个地方

在使用单个字母的正面…呃,看不到任何

注意:有一个相关的MySQL question about Enums.建议也使用查找表.

猜你在找的MsSQL相关文章