目前聚天平台中添加数据集的来源可以通过直接查询数据库SQL语句,或通过接口的方式返回JSON型数据来生成数据集,下面讲的只针对通过SQL语句方式生成的数据集。随着数据库里数据越来越多,多表关联有明显的性能问题,特别是两张大表之间的join操作,如呼叫中心的通话记录表,为了查询出客户名称,需要与客户表进行关联,这就是典型的两张大表join的场景。
为了解决大表join耗时的方法很多,如增加冗余、拆分查询等,这里讲的方法主要是拆分成小SQL查询,聚天平台从V20181203开始,支持通过自定义列的方式来实现。还是以上面的例子为例进行说明,基本原理为:
1)查询主表通话记录表的数据,用来进行分页等操作;
2)查询客户表的数据,查询出第一步骤查询出的客户编号对应的客户名称,由于通过客户编号主键进行小范围查询,所以效率会很高;
3)将主数据集与自定义列的数据集进行合并;
4)其他字典类型数据,在直接通过在缓存中获取,不需要关联字典表。
两张表结构如下:
i)通话记录表:
info_record(record_id int,customer_id int)
ii)客户表:
info_customer(customer_id id,customer_name varchar(100))
具体在设计器中的操作步骤:
1)添加数据ds,SQL语句如下:
select record_id,customer_id from info_record;
2)切换到自定义列选项卡,点击添加列,条件值(主数据集列)和条件列(自定义列SQL中对应的关联列)都写上customer_id,同时SQL写上
select customer_id,customer_name from info_customer
如下图:
真正执行查询的时候,会执行select customer_id,customer_name from info_customer where customer_id in (?,?...),其中参数为条件列指定的值;
3)如果对应的是一对多的关系,可以勾选
这样就可以在合并的时候,将查询的多表的值进行指定分隔符进行(默认为英文逗号)合并;
4)如果还需要其他自定义列,在后面再次添加配置即可;
5)在执行查询的时候,会各自查询出数据集,然后按条件对数据集进行合并,统一合并到主数据集中,供模块其他地方使用。
通过以上设置,在数据量100W以上的表中,查询时间将有显著提高。
领取专属 10元无门槛券
私享最新 技术干货