Когато използвате подготвен оператор (т.е. предварително компилиран оператор), веднага щом DB получи този израз, той го компилира и кешира, така че да може да използва последния компилиран оператор за последователно извикване на същия израз. Така той става предварително компилиран за последователни повиквания.
Обикновено използвате подготвен израз с променливи за свързване, където предоставяте променливите по време на изпълнение. Сега какво се случва при последователно изпълнение на подготвени оператори, можете да предоставите променливите, които са различни от предишните извиквания. От гледна точка на DB, той не трябва да компилира изявлението всеки път, просто ще вмъкне променливите за свързване по време на rum. Така става по-бързо.
Други предимства на подготвените изявления са:-
1)защита срещу атака с SQL инжекция
2) По-бързо за последователни извиквания на едни и същи оператори
Как работи :-
-
Предварителното компилиране се извършва от базата данни. Някои по-прости бази данни изобщо не компилират предварително изрази. Други могат да го компилират предварително при извикването на подготвителния оператор, а трети могат да го направят, когато за първи път се извика execute в оператора, като се вземат предвид стойностите на параметрите при компилиране (създаване на план за) оператора.
-
Базите данни, които изпълняват изрази за предкомпилиране, обикновено ги кешират, така че по всяка вероятност ps1 няма да бъде компилиран отново. Някои JDBC драйвери (напр. на Oracle) дори кешират подготвени изявления, така че всъщност не са го затворили, когато е извикан ps.close().
-
Базите данни обикновено кешират изявления, докато нещо не ги изхвърли от кеша.
За подробности прегледайте това уики връзка