全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

平台的数据模型如何查数据?

最近更新时间:2021-03-02 20:03:29

如图的数据建模,平台如何执行sql?

image.png

我们从后台截取sql如下:

SELECT  *  /*查询字段已经删除,主要看下面的join逻辑*/
FROM `dashboard`.`app_version` AS `t1`
INNER JOIN `dashboard`.`api_name` AS `t2` ON (`t1`.`id` <=> `t2`.`id`)
INNER JOIN `dashboard`.`backend_message` AS `t3` ON (`t1`.`id` <=> `t3`.`id`)
INNER JOIN `dashboard`.`backend_deploy_persons` AS `t4` ON (`t3`.`creator_id` <=> `t4`.`creator_id`)
INNER JOIN `dashboard`.`bigviz_user` AS `t5` ON (`t4`.`id` <=> `t5`.`id`)

WHERE (t5.id IN (8082))

从sql可以看出,平台是以节点对应关系来执行sql的。

拓展:

(1)如果在列表筛选器针对其中一个表的字段设置了筛选,sql 如何执行?

sql是先把模型中表与表的join关系理出来。然后基于整个结果做的筛选字段筛选。

这样的缺陷是:如上图,如果t1和t5在不做筛选的时候会出来多条结果,对性能不是特别好。

优化:可以把t5创建一个自定义sql, 内容如: select * from t5 where 条件=xxx 。 然后把这个sql视图代替上图的t5单表。

(2)这样的一个数据模型,在报告中,如果只用了某张表的一个字段,会如何?
平台会把数据模型的sql 当成一个子sql,在该sql上做查询

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈