关于mysql(阿里AnalyticDB MySQL版)的查询SQL中含有json会导致特别慢的问题?
是这样的,我们有一个分析订单数据的需求,源表是其他部门存的一张表,表结构很简单,大概是几个门店ID,公司ID,订单ID和时间组成的一张表,重点来了,他们存表没按范式,直接建了一个json类型的字段,这笔支付的详情都在这个字段中,是个json串。
我们需求是解析这张表,并且将这个json串转换到两张表里,方便报表查询,但是这张表大概有2000W+的数据。
接下来我就开始干活了,先试写了个java程序,多线程读取然后写入,但是发现速度怎么都提不上去,不管我开几个线程,后面一直是觉得我可能代码写的还不够优秀吧,我用了dataX,开发了一个mysql的读取插件,但是发现,速度和java程序居然是差不多的,用了splitPK拆分任务还是很慢。
最后发现,不管我怎么拆分,只要查询列表中带上这个json类型的字段,速度就会从10000条每秒骤降到500条每秒左右(索引都有)。
我应该怎么处理这个json类型的字段才能查询速度快呢?或者有没有什么别的思路,麻烦大家了。
dataX拆分的SQL示例:
select group_id,shop_id,order_id,order_ext from dmi_shop_order_src2024 where (1495827025088040960 <= sid AND sid < 1495827026592895002);select group_id,shop_id,order_id from dmi_shop_order_src2024 where (1495827025088040960 <= sid AND sid < 1495827026592895002);
sid是主键
order_ext是json类型的字段
上面SQL大概400条每秒
下面的SQL 1W条每秒以上
回答:
盲猜json太大了,数据库在云端,程序在本地,带宽瓶颈了
大量数据处理的程序放最好放到服务器上跑
以上是 关于mysql(阿里AnalyticDB MySQL版)的查询SQL中含有json会导致特别慢的问题? 的全部内容, 来源链接: utcz.com/p/944632.html