一个带varchar(255)PRIMARY KEY的表会伤害到什么吗?

Aar*_*ide 2 sql-server database-design sql-server-2008-r2 sqldatatypes

我知道这不是一个好主意,但我想仔细检查一下这不会像崩溃服务器那样疯狂.

CREATE TABLE [dbo].[Items](
    [Id] [nvarchar](255) NOT NULL PRIMARY KEY,
    [Value] [nvarchar](max) NOT NULL,
)
Run Code Online (Sandbox Code Playgroud)

知道关于这样的键如何与[int]键相比的细节会很有趣,但只是确认这不会伤害任何东西就足够了.

OMG*_*ies 5

你可以使用VARCHAR(#)作为主键吗?

是.
文档中,VARCHAR(255)对于该列,每行将占用超过257(255 + 2)个字节(取决于实际数据的长度).

这将是有趣知道如何像这样的关键比作细节INT的关键

INT根据文档,需要4个字节.根据您的数据,数字数据类型占用的空间更少:

  • SMALLINT:2个字节
  • TINYINT:1个字节

字节数越低,访问列中的数据的速度就越快.这包括JOIN.此外,数据库(和备份)将更小.

我会非常怀疑VARCHAR像主键这么大的需要- GUID甚至都不长.