Hallo,
ich habe hier zwei Tabellen in einer Oracle 10g Datenbank, die mit einem MERGE Statement täglich abgeglichen werden sollen. Aktuell hat die Zieltabelle ca. 70 Mio. Datensätze und die Quelltabelle 5 Mio. Datensätze. Die ON (Join) Klausel sieht wie folgt aus:
[highlight=sql]
ON (
dst.date_year = src.date_year
and dst.date_month = src.date_month
and dst.date_day = src.date_day
and dst.datalogger_id = src.datalogger_id
and dst.device_id = src.device_id
and dst.channel_name = src.channel_name
)
[/highlight]
In beiden Tabellen existiert ein UNIQUE Constraint auf den Feldern der ON-Klausel. Das MERGE Statement weigert sich allerdings einen Index zu nehmen und zeigt laut Ausführungsplan einen FULL TABLE SCAN für beide Tabellen an. Für die Quell-Tabelle ist das ja ok, weil er eh alle durchgehen muss, aber für die 70 Mio. Zieltabelle hätte ich mir erwartet, dass er über einen Index geht.
Für beide Tabellen wurden die Statistiken mit:
[highlight=sql]
analyze table xyz compute statistics
[/highlight]
neu berechnet. Ändert nichts am Ausführungsplan.
Hat jemand eine Idee?
ich habe hier zwei Tabellen in einer Oracle 10g Datenbank, die mit einem MERGE Statement täglich abgeglichen werden sollen. Aktuell hat die Zieltabelle ca. 70 Mio. Datensätze und die Quelltabelle 5 Mio. Datensätze. Die ON (Join) Klausel sieht wie folgt aus:
[highlight=sql]
ON (
dst.date_year = src.date_year
and dst.date_month = src.date_month
and dst.date_day = src.date_day
and dst.datalogger_id = src.datalogger_id
and dst.device_id = src.device_id
and dst.channel_name = src.channel_name
)
[/highlight]
In beiden Tabellen existiert ein UNIQUE Constraint auf den Feldern der ON-Klausel. Das MERGE Statement weigert sich allerdings einen Index zu nehmen und zeigt laut Ausführungsplan einen FULL TABLE SCAN für beide Tabellen an. Für die Quell-Tabelle ist das ja ok, weil er eh alle durchgehen muss, aber für die 70 Mio. Zieltabelle hätte ich mir erwartet, dass er über einen Index geht.
Für beide Tabellen wurden die Statistiken mit:
[highlight=sql]
analyze table xyz compute statistics
[/highlight]
neu berechnet. Ändert nichts am Ausführungsplan.
Hat jemand eine Idee?
Comment