Ich habe eine gespeicherte MySQL-Prozedur, die drei Parameter verwendet.Partielle Vorbereitung der gespeicherten Prozedur
$stmt=$db->prepare("CALL MyStoredProce(?,?,?)");
$stmt->bind_param('iss',$id,$category,$name);
In einem Fall ändern sich nur zwei Parameter. Kann ich Teil Vorbereitung wie (wo mittlere Parameter wird in dieser Zubereitung konstant sein):
$stmt=$db->prepare("CALL MyStoredProc(?,'CARS',?)");
$stmt->bind_param('is',$id,$name);
Vielleicht könnte es einige Vorteile werden für DBMS mit weniger erwarteten Variationen in den Parametern Aussagen vorzubereiten?
OK, ich weiß, was Sie gesagt haben, erklären Plan ist allgemein, wie Abfragevorbereitung in der Datenbank funktioniert. Aber ich denke, dass es hier nicht irrelevant ist, dass in meiner Statement-Vorbereitung ein Aufruf zur Stored Procedure erfolgt, da ich in der Lage wäre, vorbereitete Anweisungen für Abfragen wie 'INSERT INTO-Dienste (ID, Kategorie, Name) VALUES (?, 'CARS') zu erstellen. ,?) 'oder ich liege falsch (ich muss nachsehen). – sbrbot
Was ich * meinte, in meinem Kommentar in Klammern, ist das, was ich sagte, gilt auch für * alle * Abfrage. Mit anderen Worten, es würde exakt auf eine Abfrage angewendet, die aus "INSERT INTO ..." besteht, wie es bei einer Abfrage der Fall wäre, die aus "CALL ..." besteht. Dies ist ein ******************************************************************* Schritt, in dem der 'Abfrageoptimierer' eine SQL-Zeichenfolge ... "jede Zeichenfolge, jede Zeichenfolge" ... in einen Aktionsplan umwandelt Sie sind absolut richtig, dass Sie eine vorbereitete Aussage für alles-an-allen erstellen können. Ich nehme an, dass das, was ich eigentlich "klären" wollte, dass es keinerlei Auswirkungen auf: den gespeicherten Prozess hat. –