Как oracle выполняет SQL-оператор? - PullRequest
2 голосов
/ 19 мая 2011

таких как:

select country 
  from table1 
 inner join table2 on table1.id=table2.id
 where table1.name='a' and table2.name='b'
 group by country 

после разбора, какая часть будет выполнена первой?

Ответы [ 3 ]

4 голосов
/ 19 мая 2011

Похоже, вы хотите знать план выполнения, выбранный Oracle. Вы можете получить этот вывод от самого Oracle:

set serveroutput off
< your query with hint "/*+ gather_plan_statistics */" inserted after SELECT >
select * from table(dbms_xplan.display_cursor(null, null, 'last allstats'));

См. Здесь для объяснения, как прочитать план запроса: http://download.oracle.com/docs/cd/E11882_01/server.112/e16638/ex_plan.htm#i16971

Имейте в виду, однако, что выбор плана запроса не является фиксированным. Oracle пытается найти лучший на данный момент план запросов, основываясь на доступных статистических данных.

1 голос
/ 19 мая 2011

Если вы устанавливаете бесплатный инструмент SQL * Developer от Oracle, то вы можете нажать кнопку, чтобы получить план объяснения.

Краткое объяснение на http://www.seeingwithc.org/sqltuning.html

1 голос
/ 19 мая 2011

Существует множество мест, в которых можно найти порядок, в котором выполняется SQL :

  1. Предложение FROM
  2. Предложение WHERE
  3. Предложение GROUP BY
  4. Предложение HAVING
  5. Предложение SELECT
  6. Предложение ORDER BY

Но обратите внимание, что это "теоретический «порядок» - механизмам SQL разрешается выполнять операции в других порядках при условии, что конечный результат, по-видимому, был получен с использованием вышеуказанного порядка.

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