我应该在MySQL中使用blob或文本作为JSON吗?

时间:2012-04-18 02:26:09

标签: mysql text blob mysql-json

我打算在我的数据库中存储json_encoded字符串。我不能准确地说出它的长度,但我很确定它会很长。我担心的是,我将使用哪种字段类型,是blob还是text

我更喜欢那种能够在快速搜索中尽可能节省空间的地方,无论如何我还有其他专栏我应该索引。

2 个答案:

答案 0 :(得分:33)

MySQL的文档中所述,自5.7.8起支持本机JSON数据类型。

与在字符串列中存储JSON格式字符串相比,JSON数据类型具有以下优势:

  • 自动验证存储在JSON列中的JSON文档。无效的文档会产生错误。
  • 优化的存储格式。存储在JSON列中的JSON文档将转换为内部格式,以允许对文档元素进行快速读取访问。当服务器稍后必须读取以该二进制格式存储的JSON值时,不需要从文本表示中解析该值。二进制格式的结构使服务器能够直接通过键或数组索引查找子对象或嵌套值,而无需在文档之前或之后读取所有值。

因此,正如MySQL文档所述,应该使用JSON数据类型而不是文本。

答案 1 :(得分:28)

blob通常用于图像,二进制文件等内容。text应该足够适合您的情况,或者您可以使用具有更大空间容量的longtext,如果它真的是关注。

搜索方式,既然你要存储json_encode'd东西,你仍然需要在它上面调用json_decode,因为它在你的应用程序中有用,我不认为选择在这种情况下,数据类型很重要。

更好的方法是规范化您的数据库设计,而不是将相关的东西存储在一个大的json字符串中。