Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][PDO] prepare vs query vs exec - wydajność
Forum PHP.pl > Forum > Przedszkole
desavil
Witam,

Mam pytanie odnośnie wydajności pomiędzy prepare, query a exec w PDO.
Czy lepiej jest bindować wszystko i używać prepare, czy też np. część bindować, a część bezpośrednio wpisywać w zapytaniu również przy użyciu prepare, a może stosować query, w przypadku danych, które możemy podać bez bindowania/sprawdzania na ew. podatność sql injection?

exec jak wiadomo, głównie do UPDATE/DELETE/INSERT, ale może w tym przypadku również lepiej używać prepare - jeżeli chodzi o wydajność?

Pozdrawiam!
Turson
Zasada jest prosta
query/exec:
SELECT * FROM tabela WHERE kolumna = 1
UPDATE tabela SET kolumna= 1

prepare-execute
SELECT * FROM tabela WHERE kolumna = DANE_POCHODZACE_OD UZYTKOWNIKA
UPDATE tabela SET kolumna = DANE_POCHODZACE_OD UZYTKOWNIKA
desavil
Cytat(Turson @ 23.11.2014, 22:52:03 ) *
Zasada jest prosta
query/exec:
SELECT * FROM tabela WHERE kolumna = 1
UPDATE tabela SET kolumna= 1

prepare-execute
SELECT * FROM tabela WHERE kolumna = DANE_POCHODZACE_OD UZYTKOWNIKA
UPDATE tabela SET kolumna = DANE_POCHODZACE_OD UZYTKOWNIKA


Jeżeli chodzi o używanie to wiem jak tego używać, tutaj mam namyśli wyłącznie kwestię wydajności.

Np., czy lepiej jak już robimy prepare to bindować wszystkie wartości (nawet te nie pochodzące od użytkownika), czy tylko te pochodzące od użytkownika, a pozostałe wpisywać bezpośrednio w zapytaniu?
Damonsson
Wiadomo, że te bez bindowania pojedyncze zapytania będą coś tam szybsze. Ale już jak puścisz kilka update z bindowaniem naraz w transakcji, to Ci się zrobi cache tych zbindowanych i pójdzie to szybciej z bindowaniem, niż bez. Tak więc daj sobie spokój z optymalizacją na tym etapie, bo więcej z tego problemów i zależności, niż pożytku.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.