MySQL Server 支持无模式的数据存储,功能特性如下:
JSON 数据类型。JSON 值在新增 / 更新时会被分析、验证,然后储存为优化了的二进制格式。在读取时不需任何分析或验证。
JSON 函数。有 20 多个 SQL 函数用于搜索、操作、创建 JSON 值。
生成列。其工作方式很像函数索引,并能够对 JSON 的一部分进行提取或索引。
优化器在查询 JSON 数据时,会自动通过生成列寻找匹配的索引。
在例子35中,“用户设置” 被储存在了JSON列中,查询 “更新时通知我” 的用户,会使用全表扫描。通过增加一个虚拟生成列,EXPLAIN 展示出能使用到索引了:
例子35:“用户设置” 的无模式表示法
CREATE TABLE users (
id INT NOT NULL auto_increment,
username VARCHAR(32) NOT NULL,
preferences JSON NOT NULL, -- “用户设置” 使用了 JSON 类型
PRIMARY KEY (id),
UNIQUE (username)
);
INSERT INTO users
(id,username,preferences)
VALUES
(NULL, 'morgan', '{"layout": "horizontal", "warn_before_delete": false, "notify_on_updates": true}'),
(NULL, 'wes', '{"layout"