5

我计划使用 JSON.NET 对对象进行序列化和反序列化,并使用 json 字符串将其存储在数据库中。

SQL Server 2008 的哪种数据类型最好存储它?

  • nvarchar(最大值)?
  • varchar(最大值)?
4

3 回答 3

3

你的 json 会是多语言的吗?如果是 - 使用 nvarchar。如果不是 - 使用 varchar,它使用更少的存储空间并且在性能方面更有效。

于 2012-08-17T20:38:15.407 回答
2

您可能应该使用 nvarchar(max)。

http://www.ietf.org/rfc/rfc4627.txt

JSON 的首选编码是 UTF-8,但也可以使用 UTF-16 和 UTF-32,因此您可能会获取包含宽字符的数据。

另一方面,您也可以使用 varbinary(max),存储实际的 UTF-8 流并节省一些空间和处理,因为 UTF-8 流不需要转换为 .NET 中的实际字符串(即不需要UTF-8 到 Unicode 内部 .NET 字符串)。

我不会使用 varchar(max) 因为如果确实有宽字符进入,那么它们可能会被任何未转换恰好存储在 varchar 中的 UTF-8 的查询误解(假设 8 位 varchar 因为你可以还根据您的数据库设置在 varchar 中存储多字节),您不必担心将 UTF-8 转换为 varchar 的特定代码页。同样,nvarchar 是 Unicode,因此您不必担心任何混乱。

您是要对 SQL Server 中的 JSON 进行任何操作还是仅对存储进行操作?

于 2012-08-17T21:05:44.510 回答
0

varchar 10 倍。更快更好。

于 2012-08-18T06:10:44.297 回答