【发布时间】:2012-08-17 20:33:53
【问题描述】:
我打算使用 JSON.NET 对对象进行序列化和反序列化,并使用 json 字符串将其存储在数据库中。
SQL Server 2008 的哪种数据类型最好存储它?
- nvarchar(最大值)?
- varchar(max)?
【问题讨论】:
标签: sql-server json sql-server-2008 sql-server-2005 json.net
我打算使用 JSON.NET 对对象进行序列化和反序列化,并使用 json 字符串将其存储在数据库中。
SQL Server 2008 的哪种数据类型最好存储它?
【问题讨论】:
标签: sql-server json sql-server-2008 sql-server-2005 json.net
你的 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 倍。更快更好。
【讨论】: