一尘不染

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

json

我读了很多文章,并且发现了很多不同的答案。

运行MYSQL 5.7,我有一个不需要存储的大型JSON对象,只需要存储即可。使用JSON似乎效率低下-
我不需要验证它。在这种情况下最好的解决方案是什么?BLOB还是TEXT显而易见的选择,但是这两个之中最好的选择是什么?

二进制文件需要转换回文本(您最好怎么做?PHP还是在SQL查询期间?)仅需要返回文本。我非常感谢您的澄清…


阅读 374

收藏
2020-07-27

共1个答案

一尘不染

什么是手动有关JSON类型的发言权?

优化的存储格式。存储在JSON列中的JSON文档将转换为内部格式,以允许 快速读取 文档元素。当服务器稍后必须读取以该 二进制
格式存储的JSON值时,则无需从文本表示形式解析该值。二进制格式的结构使服务器能够直接通过键或数组索引查找子对象或嵌套值,而无需读取文档中它们之前或之后的所有值。

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

同样不要忘了JSON字段会剥离所有不需要的空格等,因此它将比TEXT和BLOB更为紧凑,这可能会抵消这两种类型将提供的任何检索速度。

另外,使用JSON还可以使您的系统永不过时。有一天,您可能需要在JSON字段中搜索特定项目,但是在BLOB字段中有350万条记录,那又是什么呢?

2020-07-27