【问题标题】:Arrangement of multiple tables in UNIONUNION中多个表的排列
【发布时间】:2021-06-05 08:07:40
【问题描述】:

以下三个查询的性能会有所不同吗?我认为第一个查询是有效的。尽管在幕后,优化器可能无论如何都会使它们等效。

t1 | union t2,t3,t4    

t1 | union t2 | union t3 | union t4

union t1,t2,t3,t4    

【问题讨论】:

    标签: azure-data-explorer kql


    【解决方案1】:

    所有 3 个查询将执行完全相同,因为它们的查询计划是相同的。

    【讨论】:

    • 在这种情况下,如果我在每个表中都有一个 datetime 列并且我需要应用过滤器(WHERE)是最好应用在各个表上还是应该将它应用在顶部联合查询(在所有内容都联合后过滤)?我认为在这种情况下,即使我在联合结果之上指定过滤器,优化器也会将其推送到各个表?
    • 优化器将使两个查询执行相同。也就是说,只要有可能,过滤器就会移动到union 的相关分支。假设您有 3 个表:Table1、Table2 和 Table3,其中只有前两个有一个名为 Timestamp 的列。在这种情况下,以下两个查询在性能方面将是相同的:union Table1, Table2, Table3 | where Timestamp > ago(1d)union (Table1 where Timestamp > ago(1d)), (Table2 | where Timestamp > ago(1d)), Table3
    猜你喜欢
    • 2021-04-10
    • 2017-07-10
    • 2012-05-31
    • 2015-10-06
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多