Considerate le seguenti dichiarazioni
select name from T_emp where id=1;
select name from T_emp where id=2;
select name from T_emp where id=3;
Ogni volta che viene eseguita una dichiarazione, assegni Oracle per precedenti occorrenze della stessa query. Se trova la stessa query, utilizza lo stesso piano di esecuzione . In caso contrario, deve trovare i vari percorsi di esecuzione, elaborare il piano di esecuzione ottimale ed eseguirlo.
A differenza dell'umano, non è abbastanza intelligente da comprendere che solo l'ID è cambiato (come nell'esempio sopra). Quindi attraversa tutte le lotte e la esegue.
Ma c'è un modo per dire a Oracle che è una dichiarazione simile e che può utilizzare lo stesso piano di esecuzione - BIND VARIABLE. Si prega di trovare l'esempio di seguito:
declare
v_id number;
v_name varchar2(30);
type c is ref cursor;
c1 c;
begin
for i in 1..100
loop
open c1 for 'select * from T_emp where id = :x' using i;
fetch c1 into v_name;
dbms_output.put_line('name is ' || v_name);
end loop;
END;
L'utilizzo delle variabili di legatura aiuta a migliorare la prestazione di dieci volte. PL/SQL usa le variabili di binding da solo (non è necessario dirlo esplicitamente)
Si chiama "due punti", un ";" è un punto e virgola. –