我计划使用 JSON.NET 将对象序列化和反序列化,并使用 json 字符串将其存储在数据库中。
SQL Server 2008 的哪种数据类型应该最适合存储它?
- nvarchar(max)?
- 瓦尔查尔(最大)?
你的 json 会是多语言的吗?如果是 - 选择nvarchar。如果没有 - 使用 varchar,它使用更少的存储空间并且在性能方面更有效。
你可能应该使用 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执行任何操作还是仅对存储执行任何操作?
varchar 10 倍。更快更好。