代码之家  ›  专栏  ›  技术社区  ›  Neha

SQL UNION性能

  •  -1
  • Neha  · 技术社区  · 9 年前

    我在sql查询中使用了三个UNION。查询需要很多时间。还有其他更快的选择吗?我的数据库是Vertica,我用Tableau编写了查询。 选择查询如下所示-

    (select A,B,C from (select fun(X) as A, B,C,D from table1 where condition1 group by B,C,D)alias where condition2)
    UNION 
    (select A,B,C from (select fun(X) as A, B,C,D from table1 where condition1 group by B,C,D)alias where condition3)
    ]
    UNION
    [
    (select A,B,C from (select fun(X) as A, B,C,D from table1 where condition1 group by B,C,D)alias where condition4) 
    UNION
    (select A,B,C from (select fun(X) as A, B,C,D from table1 where condition1 group by B,C,D)alias where condition5)
    
    1 回复  |  直到 9 年前
        1
  •  2
  •   Alex Blakemore    9 年前

    UNION ALL的性能优于UNION,因为数据库服务器不必消除重复的行,这可能会导致成本高昂。通常UNION ALL是你想要的。

    此外,看起来您可以使用OR组合所有最外层的where条件,这应该可以简化查询,甚至不需要UNION或UNION all