【问题标题】:What data type should be correct to store JSON content as string?将 JSON 内容存储为字符串应该正确的数据类型是什么?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      【解决方案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 进行任何操作还是只对存储进行操作?

      【讨论】:

      • 不,我打算在我的客户端应用中序列化对象并存储这个 json 对象
      • @DarfZon 那么可能不需要将其存储为 varbinary 以外的任何内容。
      【解决方案3】:

      varchar 10 倍。更快更好。

      【讨论】:

        猜你喜欢
        • 2010-10-03
        • 2014-01-13
        • 2015-08-10
        • 1970-01-01
        • 1970-01-01
        • 2011-06-10
        • 1970-01-01
        相关资源
        最近更新 更多