2016-06-10 15 views
1

Ich versuche, Daten aus einer Oracle 11g-Datenbank mit sqoop zu ziehen. Ich habe keinen PL/SQL-Hintergrund. Ich muss Datensätze auf einer großen Tabelle basierend auf bestimmten RecordType und Startzeit filtern und dann eine Verknüpfung in einer anderen Tabelle für die gleiche Startzeit (alle Datensätze in der Tabelle zwei haben den gleichen Datensatztyp wie aus Table1 gefiltert). Kann mir bitte jemand helfen und erklären, welche der Abfragen weniger Prozesse verbrauchen und warum?Welche davon ist optimiert?

Auch die Join-Filterung für die Filterung von Datensätzen in Tabelle2 basierend auf Startzeit (basierend auf Join-Bedingung oder wird noch die gesamte Tabelle analysieren) oder muss ich eine weitere Filterbedingung für die gleiche hinzufügen?

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

Hallo Shelter, ich habe die Änderung vorgenommen –

Antwort

4

Kann mir bitte jemand helfen und erklären, welche der Abfrage raubend weniger Prozesse sein wird und warum?

Generieren Sie für jede Abfrage einen EXPLAIN-Plan, und vergleichen Sie sie - Sie erhalten die Kosten für jede Abfrage.

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

Führen Sie einfach zwei Befehle:

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

Sie anfügen können Pläne auf die Frage erklären, können sie weitere Fragen und Beratung analysieren finden wie diese Abfragen optimiert werden können.