gpt4 book ai didi

SqlServer 和 nvarchar(最大)

转载 作者:行者123 更新时间:2023-12-02 21:26:40 24 4
gpt4 key购买 nike

我们目前正在考虑将字符串列设置为nvarchar(max),而不是指定特定长度,以防止数据库中没有足够的空间来存储字符串的任何问题。我只是想知道这是一件好事还是会导致任何问题,因为这样做是可以的,那么为什么要指定像 nvarchar(10) 这样的长度而不是 nvarchar(max)。我们还经常使用 varbinary(max) ,因为我们不知道需要多少二进制数据,所以我不确定这会产生多大的影响,或者考虑到我们的插入速度没有我想象的那么快应该 。这是一个示例表:

CREATE TABLE [dbo].[SAMPLETABLE] (  
[ID] [uniqueidentifier] NOT NULL,
[FIELD1] [int] NOT NULL,
[FIELD2] [nvarchar] (2000) NULL,
[FIELD3] [nvarchar] (max) NULL,
[FIELD4] [uniqueidentifier] NULL,
[FIELD5] [int] NULL,
[FIELD6] [nvarchar] (2000) NULL,
[FIELD7] [varbinary] (max) NULL,
[FIELD8] [varbinary] (max) NULL,
[FIELD9] [varbinary] (max) NULL,
[FIELD10] [uniqueidentifier] NULL,
[FIELD11] [nvarchar] (2000) NULL,
[FIELD12] [varbinary] (max) NULL,
[FIELD13] [varbinary] (max) NULL,
[FIELD14] [bit] NULL,
[FIELD15] [uniqueidentifier] NULL,
[FIELD16] [varbinary] (max) NULL,
[FIELD17] [bit] NULL,
[FIELD18] [tinyint] NULL,
[FIELD19] [datetime] NULL,
[FIELD20] [nvarchar] (2000) NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)
) ON [PRIMARY]

GO

考虑到这样的表格设计,并将 nvarchar(2000) 更改为 nvarchar(max) 会使事情变得更糟(或更好)吗? sqlserver 是否不赞成这样的设计?

最佳答案

如果您对 J. Random Developer 在 6 个月后将莎士比亚的作品插入到每列中感到高兴,那就没问题。

对我来说,数据建模的很大一部分是认真思考我希望在每一列中允许哪些数据,以及我希望禁止哪些数据。然后,我应用适当的 CHECK 约束来实现这些限制(在最佳 SQL Server 允许的情况下)。 “免费”提供合理的长度检查似乎总是一种奖励。

<小时/>

您也没有做太多“面向 future 的验证” - 我相信,稍后将 (n)varchar 列的长度更改为更大的值纯粹是元数据操作。所以我想说,根据您今天期望处理的数据(好吧,明年左右)适当调整列的大小。如果您稍后需要扩展它们,只需几秒钟即可完成。

关于SqlServer 和 nvarchar(最大),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4876108/

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