设计数据库的时候,有时候字段长度没有把握,很喜欢使用varchar(max)(nvarchar(max))。一直有点担心会影响性能,但是没有啥证据,毕竟用起来方便,所以一直使用。
最近稍微研究了一下,发现在SQL Server中,varchar(max)有很大的潜在问题,会造成内存用量大增。
在SQLServer中,一行数据最多只能保存8K数据,varchar不用max的话,最多只能用4000左右。这些数据都是存在一起的,并且会自动读入内存。而max的时候,这个数据是另外单独存储的。
在varchar(max)中即使保存1个字节的数据,SQL Server把它读入内存的时候还是会分配大约200KB内存,这个会消耗大量的内存。
综上,能不用Varchar(max)还是不用的好,当然,varchar(max)比Text还是要好一点。
网友评论