SQL Server引擎如何存储和处理[n] varchar(MAX)vs [n] varchar(n)?

时间:2017-03-19 23:09:15

标签: sql-server

我的印象是SQL Server会将nvarchar(n)值存储在内存位置,这些值可以被覆盖,而nvarchar(max)将是指向引用类型变量的指针,因此它是不可变的。

我是对还是错?

我在文档中已经找到了这个,但到目前为止还没找到。

谢谢!

1 个答案:

答案 0 :(得分:1)

NVARCHAR(MAX)列中存储50个字符并在captcha_url = "https://ercdmd.ru/captcha.php?time=#{Time.now.to_i}000" 列中存储50个字符实际上并没有什么不同。两个值都存储在行中。当行的总大小超过SQL Server的页面大小(8060字节(实际上是8192字节,但每页有一些开销)时,会出现问题。这意味着大约4000个字符(unicode数据是每个2字节) character)数据需要存储在行外。这意味着它存储在其他地方,只剩下24字节的剩余部分,这实际上是保存数据的地址。

Here is some info regarding the "overflow" storage