【问题标题】:Oracle SQL: Multiple Subqueries Unioned Without Running Original Query Multiple TimesOracle SQL:合并多个子查询而不多次运行原始查询
【发布时间】:2023-04-01 16:23:01
【问题描述】:

所以我有一个非常大的数据库,需要处理大约 1% 的数据子集以转储到 Excel 电子表格中以制作图表。理想情况下,我可以选择数据子集,然后对其运行多个选择查询,然后将它们联合在一起。这甚至可能吗?我似乎找不到其他人尝试这样做,并且会大大提高我当前查询的性能。现在我有这样的东西:

SELECT (
     SELECT (
          SELECT(
                long list of requirements
          )
          UNION
          SELECT(
                slightly different long list of requirements
          )
     )
)

如果我能将两个长需求的共同点归为一组,并在两个被联合的 select 语句之间有简单的区别,那就太好了。

【问题讨论】:

    标签: sql performance oracle union subquery


    【解决方案1】:

    如果您使用的是 Oracle 9i 或更高版本,则可以使用子查询分解(SQL Server 中的又名公用表表达式 (CTE))。它使用 WITH 语法:

    WITH inline_view_name AS (
       SELECT *
         FROM YOUR_TABLEs)
    SELECT 
      FROM inline_view_name a
     WHERE ...
    UNION ALL
    SELECT 
      FROM inline_view_name b
     WHERE ...
    

    ...并且可以像您在示例中看到的那样重复使用。

    【讨论】:

      猜你喜欢
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多