我计划使用JSON.NET对对象进行序列化和反序列化,并将json字符串存储在数据库中。
SQL Server 2008的哪种数据类型应该最好存储它?
答案 0 :(得分:3)
你的json会多语言吗?如果是 - 请使用nvarchar。如果不是 - 使用varchar,它会占用更少的存储空间,并且在性能方面更有效。
答案 1 :(得分: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),因为如果你确实有广泛的字符,那么它们可能会被任何未转换UTF-8的查询错误解释,而UTF-8恰好存储在varchar中(假设8位varchar)因为您还可以根据数据库设置在varchar中存储多字节,并且您不必担心将UTF-8转换为varchar的特定代码页。同样,nvarchar是Unicode,因此您不必担心任何混乱。
您打算对SQL Server中的JSON或仅存储进行任何操作吗?
答案 2 :(得分:0)
varchar 10倍。更快更好。