irpas技术客

Mysql Json格式_不学会Ⅳ_mysql输出json格式

网络投稿 1235

Mysql Json格式

提示:学习笔记 mysql5.7后提供的一种反范式数据格式,非常适合代替MoungoDB


前言

Mysql提供的Json数据格式,约束性小,不俗的查询性能


一、应用场景

如文章,文章分类,特殊文章又有特殊字段等等需要好几张表保存的数据,每次查询或筛选要查好几张表,如果都放在一张表如果有一对多的列又不好处理,这也是MoungoDB在这方面广泛应用的一部分原因,mysql的json存储格式,在低约束下,提供了json内字段的索引功能,保持了不错的性能.

二、使用步骤 1.选择json格式

2.读数据

select [普通表字段],[json字段]->‘ . [ j s o n 内 数 据 字 段 ] ′ f r o m [ 表 名 ] W H E R E [ j s o n 字 段 ] ? > ′ .[json内数据字段]' from [表名] WHERE [json字段]->' .[json内数据字段]′from[表名]WHERE[json字段]?>′.[json内数据字段]’=“9803”

3.创建json字段虚拟列

这样子可以将json内的字段当作一个普通字段进行查询 创建虚拟列后 查询sql与普通查询没什么区别 该虚拟列会跟随json列改变,但虚拟列不能被修改

4.虚拟列创建索引

总结

该结构非常适合加快查询速度,做到一表查询一次查询,避免多表查询数据,也可以使数据列动态扩充。可以创建索引也使他保存了很强的性能

附带sql

CREATE TABLE t_a_activity ( activity_id int unsigned NOT NULL AUTO_INCREMENT COMMENT ‘活动编号,自增编号’, extra_info json DEFAULT NULL PRIMARY KEY (activity_id) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=11762 DEFAULT CHARSET=utf8mb3 COMMENT=‘活动基本信息表’;

INSERT INTO t_a_activity( extra_info) VALUES (‘{“phone”: “”, “c_time”: “1648711007”, “u_time”: “1648711097”, “sponsor”: “”, “end_time”: “1651334399”, “owner_id”: “3”, “parent_id”: “0”, “title_pic”: “”, “use_scene”: “0”, “fans_limit”: “0”, “max_amount”: “1000.00”, “owner_type”: “0”, “qrcode_url”: “”, “start_time”: “1646742400”, “activity_id”: “9803”, “cancel_unit”: “1”, “platform_id”: “2”, “show_in_app”: “1”, “show_in_xcx”: “1”, “template_id”: “69”, “activity_pic”: “marketing/v2/activity/20220329142418148/5568220f-1082-4372-af73-cd7820966bfe/砸金蛋2(2).png”, “examine_time”: “0”, “activity_addr”: “”, “activity_type”: “10”, “examine_state”: “3”, “platform_type”: “1”, “register_rule”: “1”, “reward_repeat”: “1”, “reward_target”: “1”, “activity_state”: “4”, “activity_title”: “砸金蛋正式活动”, “examine_remark”: “”, “show_in_advert”: “1”, “activity_remark”: “砸金蛋正式活动”, “register_enable”: “1”, “owner_proxy_id_1”: “35011723”, “owner_proxy_id_2”: “0”, “owner_proxy_id_3”: “0”, “owner_proxy_id_4”: “0”, “activity_subtitle”: “砸金蛋正式活动”, “distribute_enable”: “0”, “platform_proxy_id”: “35011723”, “reward_grant_mode”: “2”, “template_theme_id”: “91”, “reward_condition_id”: “62”, “activity_template_id”: “76”, “reward_integral_rule”: “”, “max_prize_probability”: “100.000000”, “reward_condition_code”: “1”, “prize_probability_mode”: “1”}’);

select t_a_activity.*,extra_info->‘KaTeX parse error: Double subscript at position 26: …state' from t_a_?activity WHERE ….activity_state’=“4” limit 4 select * from t_a_activity where v_activity_id=9803

alter table t_a_activity add COLUMN activity_state varchar(32) generated always as (json_unquote(json_extract(extra_info,_utf8mb4 ‘$.activity_state’))) virtual null

select * from t_a_activity where activity_state=4 limit 4

create index index_activity_state on t_a_activity(activity_state)


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #mysql输出json格式 #MySQL #json格式