Hallo MB,
z.Z. arbeite ich an SQl Statements. Ein kleines Beispiel veranschaulicht gut meine Frage
$sql = "INESRT INTO {$tabelle} ( {$spalte1}, {$spalte2}, ... ) VALUE ( {$value1}, {$value2}, ... );"
Compakt, gut aber ich schätze mal weniger perfomant
$sql = 'INESRT INTO ' .$tabelle. ' ( ' .$spalte1. ', ' .$spalte2. ', ... ) VALUE ( ' .$value1. ', ' .$value2. ', ... );'
idiotisch lang aber ich schätze mal perfomater.
Ich bräuchte hilfe bei der wahl.
Im besten Fall nimmst Du wohl keine der beiden Varianten:
- Stringverkettungen sind meistens schlecht lesbar. Wenn Du eh objektorientiert arbeitest, dann schreibe Dir Klassen, welche diese Verkettungen übernehmen können.
- Beachte immer den Kontextwechsel. Selbst dann, wenn Du Dir sicher bist, wo die Daten herkommen (Fehler können immer mal irgendwo, insbes. zukünftig, passieren, deswegen lieber von Anfang an beachten).
- Wenn beide Varianten tatsächlich einen Performance-Unterschied machen sollten, wäre er vermutlich vernachlässigbar klein. Nehme die Variante, die am besten lesbar und am wenigsten fehleranfällig ist. Wenn Du irgendwo Performance-Probleme entdeckst, liegt es mit Sicherheit nicht am Unterschied dieser beiden Varianten. Außerdem kannst Du Dich dann zielgerichtet auf die Suche begeben. Sowas im Voraus einzuplanen ist in aller Regel unnötig und nicht zielführend.
- Verwende so etwas wie PDO, damit hast Du einige der zuvor genannten Probleme bereits erschlagen.
Ansonsten noch zu Deiner Frage, was performanter ist: Das wirst Du nur durch echte Analyse eines aussagekräftigen Tests herausbekommen. Zum einen spielen da unglaublich viele Faktoren eine Rolle. Zum anderen kommt es in diesem speziellen Fall sicherlich noch zusätzlich darauf an, wie viele Variablen "ersetzt" werden müssen. Dass der zweite Fall performanter ist, ist reine Spekulation. Es könnte durchaus auch anders herum oder abhängig von der Anzahl der Variablen sein.
Gruß
Dennis