存储大型JSON - 二进制或文本

时间:2016-12-17 12:55:42

标签: php mysql json

我阅读了很多帖子,我发现了很多不同的回复。

运行MYSQL 5.7,我有一个大型JSON对象,不需要查询,只需要存储。使用JSON似乎效率低下 - 我不需要验证它。在这种情况下,最好的解决方案是什么? BLOBTEXT是明显的选择,但两者中最好的选择是什么?

二进制文件需要转换回文本(你最好怎么做?PHP或在SQL查询期间?)文本只需要返回。我真的很感激任何澄清......

1 个答案:

答案 0 :(得分:3)

manual对JSON类型的评价是什么?

  

优化的存储格式。存储在JSON列中的JSON文档是   转换为内部格式,允许快速读取访问   文件要素。当服务器稍后必须读取存储的JSON值时   在此二进制格式中,无需从文本中解析该值   表示。二进制格式的结构是为了启用服务器   通过键或数组索引直接查找子对象或嵌套值   不在文档中读取它们之前或之后的所有值。

强调我的。您显然正在保存此JSON对象,因为您打算在其他时间读取它。如果你在每个查询中读取它,将它存储为BLOB或TEXT可能是你从数据库中检索它的部分快几毫秒,但你将花费更多,并将TEXT对象转换为更多JSON文档。

另外,我们不要忘记JSON字段会删除所有不需要的空格等,因此它会比TEXT和BLOB更紧凑,这可能会抵消这两种类型提供的任何检索速度。

此外,使用JSON可以使您的系统面向未来。有一天你可能需要在你的JSON字段中搜索一个特定的项目,但是你在BLOB字段中有350万条记录,那么呢?