You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在两张表间做条件选择,为Tableau仪表盘更新视图?

高效选择两张表中最新数据的替代方案

核心优化思路

先单独获取两张表的最大刷新日期,再根据日期优先级直接选择对应表的全部数据,彻底避免全表UNION带来的性能损耗。

两种可行SQL实现

方法1:通过CTE先计算日期再筛选

WITH date_comparison AS (
    SELECT
        (SELECT MAX(date) FROM table1) AS t1_latest,
        (SELECT MAX(date) FROM table2) AS t2_latest
)
SELECT * FROM table1
WHERE EXISTS (SELECT 1 FROM date_comparison WHERE t1_latest >= t2_latest)
UNION ALL
SELECT * FROM table2
WHERE EXISTS (SELECT 1 FROM date_comparison WHERE t2_latest > t1_latest);

方法2:直接用子查询做条件判断

-- 当table1日期最新或两者相同时,取table1
SELECT * FROM table1
WHERE (SELECT MAX(date) FROM table1) >= (SELECT MAX(date) FROM table2)
-- 仅当table2日期更新时,取table2
UNION ALL
SELECT * FROM table2
WHERE (SELECT MAX(date) FROM table2) > (SELECT MAX(date) FROM table1);

性能提升点

  • 仅需查询两张表的最大日期(如果日期列有索引,这一步几乎是瞬间完成),不需要扫描全表数据
  • 最终只读取选中的那张表,完全避免了原方案中合并两张大表产生的大量临时数据

原方案的问题

你之前的UNION方案需要先合并两张全量数据,再做过滤,对于数据仓库里的大表来说,会产生巨量中间数据,严重拖慢查询速度,上述方案从根源上减少了数据处理量。

内容的提问来源于stack exchange,提问作者anandu Menon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:18:12