我计划使用 JSON.NET 对对象进行序列化和反序列化,并使用 json 字符串将其存储在数据库中。
SQL Server 2008 的哪种数据类型最好存储它?
- nvarchar(最大值)?
- varchar(最大值)?
我计划使用 JSON.NET 对对象进行序列化和反序列化,并使用 json 字符串将其存储在数据库中。
SQL Server 2008 的哪种数据类型最好存储它?
你的 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 倍。更快更好。