Come impostare le variabili di bind su Oracle SQL

November 12

Ogni volta che un'istruzione SQL viene inviato al database, delle partite testo esatto viene effettuato per vedere se l'istruzione è già presente nel pool condiviso. Se non viene trovata alcuna corrispondenza, un processo ad alta intensità di risorse chiamato viene eseguito un parse difficile. l'uso di variabili bind può ridurre questo sovraccarico. variabili di bind sono variabili di sostituzione che vengono utilizzati al posto di letterali (ad esempio "John Doe") che hanno l'effetto di inviare lo stesso SQL di Oracle ogni volta che si esegue una query. Utilizzando le variabili di bind può portare a un significativo miglioramento delle prestazioni per frequentemente interrogati database multiutente.

istruzione

1 Definire la variabile che si desidera utilizzare nella sua dichiarazione al SQL * Plus Prompt dei comandi utilizzando la sintassi:

variabile << nome della variabile >> << tipo >>

Per esempio:

numero CustID variabile

2 Impostare i valori delle variabili di bind definite utilizzando la sintassi:

exec: << nome della variabile >>: << = valore della variabile >>

Per esempio:

exec: CustID: = 123455

3 Inserire l'istruzione SQL sostituendo la variabile si legano per il valore letterale. Per esempio:

select * from emp dove customer_id =: CustID;

Consigli e avvertenze

  • PL / SQL rende molto facile da usare variabili di bind, perché ogni riferimento ad una variabile PL / SQL viene implicitamente convertito in una variabile di legatura. Non è richiesta alcuna sintassi speciale.
  • Quando si crea SQL dinamica utilizzando "esecuzione immediata," invece di concatenare un valore, come mostrato in questo esempio:
  • esecuzione immediata 'aggiornamento emp insieme sal = sal * 2 dove empno =' || p_empno;
  • si può invece sostituire la sintassi variabile di legatura come illustrato di seguito:
  • esecuzione immediata 'EMP set aggiornamento sal = sal * 2 dove empno =: x' utilizzando p_empno;
  • Tenete a mente che si legano variabile dovrebbe in primo luogo essere usato con le query OLTP. Utilizzando variabili di bind con una lunga corsa o data warehouse di tipo query può ridurre le prestazioni. Ad esempio, l'uso di variabili bind non consente trasformazioni stella, che riduce notevolmente l'efficienza di unire tabelle dei fatti e dimensioni in uno schema a stella.