每次我混淆选择varchar(max)或varchar(fix)数据类型.假设我有一个大约5000 varchar的数据列.列不是null类型.
我应该设置varchar(max)not null或varchar(5000)not 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,[PageContent] [varchar](5000) NOT NULL,[IsActive] [bit] NOT NULL
// [PageContent]将是5000个char或单个char或null然后我应该采取什么.
彼此想我想知道. null和not null之间的主要区别是什么.它仅用于验证检查以及对性能的影响.
@H_301_16@解决方法
MSDN
>当列数据条目的大小不同时使用varchar
相当.
>当列数据条目的大小变化时,使用varchar(max)
相当大,大小可能超过8,000字节.
如果在声明VARCHAR变量或列中指定了长度,则允许的最大长度为8000.如果长度大于8000,则必须使用MAX说明符作为长度.如果指定的长度大于8000,则会遇到以下错误(假设指定的长度为10000):
The size (10000) given to the type ‘varchar’ exceeds the maximum allowed for any data type (8000).
Varchar [(n)]和Varchar(Max)之间没有太大的性能差异.与Varchar(Max)相比,Varchar [(n)]提供了更好的性能结果.如果我们知道要存储在列或变量中的数据小于或等于8000个字符,那么与Varchar(Max)相比,使用此Varchar [(n)]数据类型可提供更好的性能.例如:当我运行以下内容时脚本通过将变量@FirstName类型更改为Varchar(Max)然后为100万个赋值,它始终比我们使用数据类型的时间多一倍
Varchar(50) for variable @ 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@H_301_16@ @H_301_16@