gpt4 book ai didi

sql - 我应该设计一个主键为varchar或int的表吗?

转载 作者:行者123 更新时间:2023-12-02 01:27:20 27 4
gpt4 key购买 nike

我知道这是主观的,但是我想了解人们的意见,并希望在设计sql服务器表结构时可以应用一些最佳实践。

我个人认为在固定(最大)长度的varchar上键入表是不可以的,因为这意味着必须在使用该表作为外键的任何其他表上也传播相同的固定长度。使用int可以避免必须在整个板上应用相同的长度,这必然会导致人为错误,即1个表具有varchar (10),而另一个表具有varchar (20)

这听起来像是噩梦般的初始设置,再加上表的将来维护也很麻烦。例如,假设键varchar列突然变为12个字符而不是10个字符。您现在必须去更新所有其他表,这可能是几年后的一项艰巨的任务。

我错了吗?我在这里错过了什么吗?我想知道其他人对此有何看法,以及是否将int用作主键是避免维护噩梦的最佳方法。

最佳答案

我绝对建议在每个表格中使用INT NOT NULL IDENTITY(1,1)字段作为
首要的关键。

使用IDENTITY字段,您可以让数据库处理所有细节,以确保它确实是唯一的,并且INT数据类型只有4个字节并已固定,因此它更容易且更适合用于主数据库(和集群) )键入您的表格。

而且您是对的-INT是INT是INT-它不会改变任何内容的大小,因此您将不必去重新创建和/或更新外键关系。

使用VARCHAR(10)或(20)只会占用太多空间-10或20个字节而不是4个字节,这是很多人都不知道的-群集键值将在每个索引条目上重复表上的单个非聚集索引,因此有可能浪费大量空间(不仅在磁盘上-这很便宜-而且在SQL Server的主内存中)。另外,由于它是变量(可能是4,可能是20个字符),因此SQL Server很难正确维护良好的索引结构。

马克

关于sql - 我应该设计一个主键为varchar或int的表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301165/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com