数据集配置-自定义列

目前聚天平台中添加数据集的来源可以通过直接查询数据库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以上的表中,查询时间将有显著提高。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181222G0LIMG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券