每次我为选择varchar(max)或varchar(fix)数据类型而感到困惑时。假设我有一个大约5000 varchar的数据列。列不是空类型。
我应该设置varchar(max) null还是varchar(5000) null。
在可空数据类型的情况下也是一样的。
CREATE TABLE [dbo].[tblCmsPages](
[CmsPagesID] [int] IDENTITY(1,1) NOT NULL,
[PageName] [varchar](250) NOT NULL,
[PageContent] [varchar](max) NOT NULL,
[Sorting] [int] NOT NULL,
[IsActive] [bit] NOT NULL) /或
CREATE TABLE [dbo].[tblCmsPages](
[CmsPagesID] [int] IDENTITY(1,1) NOT NULL,
[PageName] [varchar](250) NOT NULL,
[PageContent] [varchar](5000) NOT NULL,
[Sorting] [int] NOT NULL,
[IsActive] [bit] NOT NULL//PageContent将为5000个字符或单个字符或null,那么我应该使用什么。
彼此认为我想知道。空和not null的主要区别是什么?它是否仅用于验证检查以及对性能的影响。
发布于 2015-03-11 07:25:43
当在声明VARCHAR变量或列时指定长度时,允许的最大长度是8000。如果长度大于8000,则必须使用MAX说明符作为长度。如果指定的长度大于8000,将遇到以下错误(假定指定的长度为10000):
给定类型“varchar”的大小(10000)超过了任何数据类型(8000)所允许的最大值。
更新:-我找到了一个链接,我想分享:-
这里
Varchar[(n)]与Varchar(Max)的性能差异不大。Varchar[(n)]提供了比Varchar(Max)更好的性能结果。如果我们知道要存储在列或变量中的数据小于或等于8000个字符,那么使用此Varchar(n)数据类型可以提供更好的性能,而不是Varchar(Max).Example:当我通过将变量@FirstName类型更改为Varchar(Max)来运行下面的脚本时,在100万次赋值中,它始终要比使用数据类型作为Varchar(50)用于变量@FirstName时花费两倍的时间。
DECLARE @FirstName VARCHAR(50), @COUNT INT=0, @StartTime DATETIME = GETDATE()
WHILE(@COUNT < 1000000)
BEGIN
SELECT @FirstName = 'Suraj', @COUNT = @COUNT +1
END
SELECT DATEDIFF(ms,@StartTime,GETDATE()) 'Time Taken in ms'
GO 发布于 2015-03-11 07:21:00
你对数据有清楚的了解,它不会超过5000,我更喜欢varchar(n)(varchar(5000) )。
如果您想在varchar(n)和varchar(max)之间进行选择,请注意以下要点:
发布于 2015-03-11 07:15:00
“大约5000”-如果你不知道,那么设置是最大可能是最好的选择。另一方面,如果你知道它不会超过6000,你最好使用这个上限来节省一些空间。
这在很大程度上取决于存储了多少数据,访问了多少数据,以及数据的重要性。没有什么神奇的规则适合我所担心的一切。
至于允许空还是非空,我个人更喜欢,在大多数情况下,允许空。首先,null意味着什么,其次,我更喜欢在前端设置这样的限制。当然,这取决于存储的数据。
https://stackoverflow.com/questions/28980502
复制相似问题