Oracle SQL: объединение нескольких подзапросов без многократного выполнения исходного запроса - PullRequest
0 голосов
/ 13 мая 2010

Итак, у меня очень большая база данных, и мне нужно поработать над подмножеством ~ 1% данных, чтобы поместить их в электронную таблицу Excel для построения графика. В идеале я мог бы выбрать подмножество данных и затем выполнить несколько запросов на выборку, которые затем объединяются в UNION. Это вообще возможно? Кажется, я не могу найти кого-то еще, кто пытался бы сделать это, и он немного улучшил бы производительность моего текущего запроса. Прямо сейчас у меня есть что-то вроде этого:

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

и было бы неплохо, если бы я мог сгруппировать общие черты двух длинных требований и иметь простые различия между объединяемыми двумя утверждениями select.

1 Ответ

2 голосов
/ 13 мая 2010

Если вы используете Oracle 9i или новее, вы можете использовать факторинг подзапроса (AKA Common Table Expression (CTE) в SQL Server). Он использует синтаксис 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 ...

... и может использоваться повторно, как вы видите в примере.

...