Kiedy używasz przygotowanej instrukcji (tj. wstępnie skompilowanej instrukcji), Gdy tylko DB otrzyma tę instrukcję, kompiluje ją i buforuje, aby mogła użyć ostatniej skompilowanej instrukcji do kolejnego wywołania tej samej instrukcji. Jest więc wstępnie skompilowany dla kolejnych wywołań.
Zwykle używasz przygotowanej instrukcji ze zmiennymi powiązania, w których podajesz zmienne w czasie wykonywania. Teraz, co dzieje się z kolejnym wykonaniem przygotowanych instrukcji, możesz podać zmienne, które różnią się od poprzednich wywołań. Z punktu widzenia DB, nie musi kompilować instrukcji za każdym razem, po prostu wstawi zmienne wiążące w czasie rumu. Więc staje się szybszy.
Inne zalety przygotowanych zestawień to :-
1)ochrona przed atakiem SQL-injection
2) Szybciej w przypadku kolejnych wywołań tych samych wyciągów
Jak to działa :-
-
Wstępna kompilacja jest wykonywana przez bazę danych. Niektóre prostsze bazy danych w ogóle nie prekompilują instrukcji. Inni mogą to wstępnie skompilować w wywołaniu PrepareStatement, a jeszcze inni mogą to zrobić, gdy polecenie execute zostanie wywołane po raz pierwszy, biorąc pod uwagę wartości parametrów podczas kompilowania (tworzenia planu) instrukcji.
-
Bazy danych, które wykonują prekompilowane instrukcje, zwykle przechowują je w pamięci podręcznej, więc najprawdopodobniej ps1 nie zostanie ponownie skompilowany. Niektóre sterowniki JDBC (np. Oracle) nawet buforują przygotowane instrukcje, więc tak naprawdę nie zamknęły ich po wywołaniu ps.close().
-
Bazy danych zazwyczaj przechowują instrukcje w pamięci podręcznej, dopóki coś nie wyrzuci ich z pamięci podręcznej.
Aby uzyskać szczegółowe informacje, przejrzyj tę wiki link