2016-05-03 5 views
0

ip_address_record DefinitionWie SQL Performance imporve, Array Objekte

create or replace type ip_object is object (ip_address varchar2(200)); 
create or replace type IP_ADDRESS_RECORD is table of ip_object; 

In oben habe ich Array-Objekte verwendet, PL/SQL, ipaddresses in einem Bereich zu sammeln.

Das Array funktioniert gut mit kleinen Satz von Datensätzen, d. H. Maske 124 oder 120, aber die Leistung reduziert, wenn ich riesige dh Maske 100 oder weniger geben. Gibt es eine bessere Möglichkeit, das Problem anzugehen.

Antwort

1

Verwenden Sie PL/SQL-Profilerstellung, um genau zu ermitteln, welcher Teil des Codes langsam ist. PL/SQL Developer verfügt über eine einfache Schnittstelle zum Generieren und Anzeigen von Profilberichten.

Öffnen Sie zunächst ein neues Testfenster. Geben sie den untenstehenden Code ein.

declare 
    ips ip_address_record; 
begin 
    ips := pkg_cmts_ip_tools.calculateIPValues('2001::0000/124'); 
end; 

Klicken Sie auf die Schaltfläche "Create Profilers Report" (sieht wie ein kleines Messgerät aus). Dann führe den Code aus. Wenn Sie fertig sind, gehen Sie zur Registerkarte Profiler. Es zeigt alle Codezeilen und wie viel Zeit für sie ausgegeben wurde. Sortieren Sie nach der Spalte "Gesamtzeit", um die langsamsten Zeilen zu finden.

Den langsamen Code zu finden ist nur der erste Schritt, aber er wird oft übersehen. Tun Sie nicht alles, halten Sie einen laserartigen Fokus auf die langsamen Codezeilen. Sie müssen möglicherweise auch zurücktreten und den gesamten Algorithmus berücksichtigen.