MySQL (jako většina DBMS) ukládá plány provádění připravených příkazů do mezipaměti, takže pokud uživatel A vytvoří plán pro:
SELECT * FROM some_table WHERE a_col=:v1 AND b_col=:v2
(kde v1 a v2 jsou proměnné vazby) poté odešle hodnoty, které mají být interpolovány DBMS, poté uživatel B odešle stejný dotaz (ale s jinými hodnotami pro interpolaci), DBMS nemusí plán znovu generovat. tj. je to DBMS, kdo najde odpovídající plán - nikoli PDO.
To však znamená, že každá operace s databází vyžaduje alespoň 2 zpáteční cesty (první k předložení dotazu, druhé k předložení proměnných vazeb) na rozdíl od jedné zpáteční cesty pro dotaz s doslovnými hodnotami, pak to představuje další síťové náklady. . S dereferencováním (a údržbou) mezipaměti dotazů/plánů jsou také spojeny malé náklady.
Klíčovou otázkou je, zda jsou tyto náklady v první řadě vyšší než náklady na vytvoření plánu.
I když se (podle mých zkušeností) rozhodně zdá, že použití připravených příkazů s Oraclem je výkonnostní přínos, nejsem přesvědčen, že totéž platí pro MySQL – nicméně hodně bude záležet na struktuře vaší databáze a složitosti dotaz (nebo přesněji, kolik různých možností může optimalizátor najít pro vyřešení dotazu).
Zkuste to změřit sami (nápověda:možná budete chtít nastavit práh pomalého dotazu na 0 a napsat nějaký kód pro převod doslovných hodnot zpět na anonymní reprezentace pro dotazy zapsané do protokolů).