Oracle SQL:多个子查询联合而不多次运行原始查询

时间:2010-05-12 23:04:45

标签: sql performance oracle union subquery

所以我有一个非常大的数据库,并且需要处理~1%的子集数据以转储到Excel电子表格中来制作图表。理想情况下,我可以选择数据子集,然后在其上运行多个选择查询,然后UNION一起使用。这甚至可能吗?我似乎无法找到其他任何人试图这样做,并将提高我当前查询的性能相当多。现在我有这样的事情:

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

如果我可以对两个长期要求的共性进行分组并且两个选择语句之间存在简单的差异就会很好。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Oracle 9i或更高版本,则可以使用子查询因子分析(SQL Server中的AKA公用表表达式(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 ...

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