欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > mysql JSON特性优化

mysql JSON特性优化

2024/10/23 23:26:08 来源:https://blog.csdn.net/liu_xue_xue/article/details/140619382  浏览:    关键词:mysql JSON特性优化

有朋友问到,mysql如果要根据json中的某个属性过滤,数据量大的话,性能很差,要如何提高性能?

为什么要用json串?

由于一些特定场景,mysql需要用到json串,例如文档,不同的文档可能包含的属性不一样,且属性个数较多,这个时候用json存储比较合适,不然用宽表,影响性能,维护也麻烦(例如后期新增属性之类的)

好了,不废话,直接上方案

前置条件

创建表test,包含如下数据

 常规的过滤

(全表扫描,效率低)

select id,name,extra from test where extra->'$.tid'='t3';

如何提升性能?

这里可以根据mysql5.7引入的虚拟列来解决

ALTER TABLE test ADD COLUMN v_tid varchar(32) GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT( extra, _utf8mb4 '$.tid' ))) VIRTUAL NULL;

 

后面可以为这个虚拟列创建索引,根据虚拟列来过滤即可

select id,name,extra from test where v_tid='t3';

注意:如果要删除虚拟列,可以执行如下语句

ALTER TABLE test DROP COLUMN v_tid;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com