laravel - 目前我将 json 数据保存在字符串类型的列中,制作 json 类型有什么好处吗?
问题描述
在我的项目中,我目前正在此列中保存一些 json 数据:
$table->string('meta')->nullable();
使用有什么真正的好处吗
$table->json('meta')->nullable();
因为我的应用程序必须同时使用 MySQL 和 MariaDB,所以我没有使用 laravel 提供的任何额外功能来搜索和更新 json 列。因此,如果我们算上这些好处,那么在将保存 json 数据的列中使用 json 而不是字符串还有其他好处吗?
解决方案
文档中描述了JSON优于String的主要优点
自动验证存储在 JSON 列中的 JSON 文档。无效的文档会产生错误。
优化的存储格式。存储在 JSON 列中的 JSON 文档被转换为允许对文档元素进行快速读取访问的内部格式。当服务器稍后必须读取以这种二进制格式存储的 JSON 值时,不需要从文本表示中解析该值。二进制格式的结构使服务器能够直接通过键或数组索引查找子对象或嵌套值,而无需读取文档中它们之前或之后的所有值。
并且可以添加,您可以为 json 列创建二级索引。
推荐阅读
- jenkins - 在 Windows 服务器上安装 Jenkins 并使用 VM 的外部 ip [google-compute-engine] 访问它
- dask - 如何在解析的 csv 块上应用多个标准以获得多个输出?
- html - 为什么 HTML 将 2 字节和 3 字节字符视为相同,而不是 4 字节?
- php - PHP 在尝试使用 readfile() 函数时显示奇怪的符号
- google-chrome - 无法使用 Vodafone 和 chrome/opera 访问网站
- html - Flex/Grid 标题高度过高
- quantum-computing - 量子幅度编码
- crystal-reports - Crystal Reports:需要从 Running Total distinct counts 中获取百分比
- docker - 是否可以在 docker 容器中配置 prometheus 以在 docker 主机上抓取目标?
- javascript - 从头部拒绝特定的java脚本脚本使用selenium c# js