2016-04-01 10 views
0

Ich möchte wissen/lernen den Unterschied zwischen NESTED LOOPS und Hash beitreten. Zu diesem Zweck habe ich diese Frage gestellt. Der Abfrage- und EXPLAIN-Plan ist sehr lang, weshalb diese hier nicht veröffentlicht werden.Wie lese ich die Empfehlungen von DBA?

Ich habe die folgenden Empfehlungen von DBA, kann jemand erklären, was der neue Ausführungsplan benötigt?

Oraiginal Ausführungsplan 1 enter image description here

New Ausführungsplan 1 enter image description here

Ich denke, die Notwendigkeit, die Nested Loops zu entfernen, wie diese geschachtelte Schleifen zu entfernen?

+4

Haben Sie darüber nachgedacht, mit Ihrem DBA zu sprechen und sie zu fragen, was sie bedeuten? Es ist ein alter Trick, aber es könnte einfach funktionieren. – APC

+0

welcher ist schnell? Hash oder NESTED LOOPS, warum der DBA empfiehlt, NESTED LOOPS zu entfernen? –

+1

@Muhammad Im Allgemeinen ist NESTED LOOPs am besten, wenn Sie einen kleinen Prozentsatz der Zeilen aus einer Tabelle auswählen, und HASH JOIN ist am besten, wenn Sie einen großen Prozentsatz der Zeilen auswählen. Aber das ist ein kompliziertes Thema und viel mehr Informationen sind notwendig, um dies zu beantworten. Für den Anfang würde es hilfreich sein, den gesamten EXPLAIN-Plan im Standardformat zu veröffentlichen, mit 'explave plan for select ...' und dann 'select * from table (dbms_xplan.display);'. Auch, was ist die Abfrage und wie hat der DBA die Änderung vorgenommen? War es ein Codewechsel, Statistik, Planmanagement, etc. –

Antwort

0

Die "Oraiginal Plan Execution" haben LOOPS auf WIP.WIP_OPERATIONS_U1 (Index) VERSCHACHTELT dies bedeutet, dass wir eine Iteration auf diesem Index haben, und der "New Ausführungsplan" empfiehlt, dass Iterationen zu entfernen.

Meiner Meinung nach sind die NESTED LOOPS im Vergleich zu Hash Join teuer.