2016-06-10 4 views
1

Я пытаюсь извлечь данные из базы данных оракула 11g, используя sqoop. У меня нет фона PL/SQL. Я должен фильтровать записи в одной большой таблице на основе определенного типа recordType и времени запуска, а затем выполнять соединение в другой таблице за ту же самую старт (все записи в таблице два имеют тот же тип записи, что и отфильтрованный из таблицы 1). Может кто-то, пожалуйста, помогите мне и объясните, какой из запросов будет потреблять меньше процессов и почему?Какая из них более оптимизирована?

Также будет использоваться фильтрация записей в таблице 2 на основе времени начала (на основе условия соединения или все еще разобрать всю таблицу), или мне нужно добавить другое условие фильтрации для того же самого?

Query1:

Select t2.field1, t2.field2 ..... t1.some_field 
FROM table1 t1 
INNER JOIN table2 t2 ON 
(
t1.field3='certain value' AND 
t1.END_TIME >= TO_DATE('20160428 16','YYYYMMDD HH24') AND t1.END_TIME < TO_DATE('20160428 17','YYYYMMDD HH24') AND t1.START_TIME = t2.START_TIME AND 
t1.field2=t2.field7) 
WHERE $CONDITIONS 

Query2:

Select t2.field1, t2.field2 ..... t1.some_field 
FROM table1 t1 
INNER JOIN table2 t2 ON 
(t1.START_TIME = t2.START_TIME AND 
t1.field2 = t2.field7) 
WHERE 
t1.field3 = 'certain value' AND t1.END_TIME >= TO_DATE('20160428 16','YYYYMMDD HH24') AND t1.END_TIME < TO_DATE('20160428 17','YYYYMMDD HH24') AND 
$CONDITIONS 
+0

Привет Укрытие, я внес изменения –

ответ

4

Может кто-то пожалуйста, помогите мне и объяснить, какие из запроса будет потребляющие меньше процессов и почему?

Создайте план объяснения для каждого запроса и сравните их - вы будете стоить каждого запроса.

https://docs.oracle.com/cd/B10501_01/server.920/a96533/ex_plan.htm#16889

Просто запустите две команды:

  1. EXPLAIN PLAN FOR your_query
  2. SELECT * FROM table(DBMS_XPLAN.DISPLAY)

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

Смежные вопросы