hi,
hab eine performancefrage zu sql:
bei einem INSERT - welche variante ist schneller (wenn überhaupt ein unterschied)?
INSERT INTO tabelle (key1, key2, key3) VALUES ('wert1','wert2','wert3');
oder
INSERT INTO tabelle SET key1='wert1', key2='wert2', key3='wert3' ;
die zweite variante würde mir programmiertechnisch die arbeit erleichtern, dass ganze muss aber schnell sein ...
sql: insert mit VALUES oder SET ?
sql: insert mit VALUES oder SET ?
gruss pischti
debian stable
debian stable
hier habe ich ein JDBC Beispiel:
Das Statement wird nur einmal "prepared", das Zeichen ? markiert eine sogenannte Hostvariable
Danach wird abwechselnd, diese Hostvariable mit einem Wert verknüpft und dann das Statement ausgeführt. Es werden in diesem Beispiel 4 Datensätze insertiert.
Auf der Clientseite ersparst du dir das oftmalige Zusammenstückeln des Statements (inclusive Typumwandlung) und das DBMS erspart sich das oftmalige Parsen des Statements.
[edit]
? markiert jetzt eine Variable, die im Kontext des Hosts (=DBMS Server) verwendet wird.
d.h. der Name Hostvariable
[/edit]
Das Statement wird nur einmal "prepared", das Zeichen ? markiert eine sogenannte Hostvariable
Danach wird abwechselnd, diese Hostvariable mit einem Wert verknüpft und dann das Statement ausgeführt. Es werden in diesem Beispiel 4 Datensätze insertiert.
Auf der Clientseite ersparst du dir das oftmalige Zusammenstückeln des Statements (inclusive Typumwandlung) und das DBMS erspart sich das oftmalige Parsen des Statements.
Code: Alles auswählen
preparedStatement = connection.prepareStatement("INSERT INTO test2 (test1_id) VALUES(?)");
preparedStatement.setInt(1,v1.intValue());
preparedStatement.execute();
preparedStatement.setInt(1, v2.intValue());
preparedStatement.execute();
preparedStatement.setInt(1, v3.intValue());
preparedStatement.execute();
preparedStatement.setInt(1, v4.intValue());
preparedStatement.execute();
? markiert jetzt eine Variable, die im Kontext des Hosts (=DBMS Server) verwendet wird.
d.h. der Name Hostvariable
[/edit]
Zuletzt geändert von gms am 24.02.2005 14:17:00, insgesamt 2-mal geändert.
- emge
- Beiträge: 1525
- Registriert: 20.10.2003 22:05:46
- Lizenz eigener Beiträge: Artistic Lizenz
- Wohnort: 50° 45' 0" N 12° 10' 0" E
Hostvariablen, manchmal auch Bindevariablen genannt, sind ein Mechanismus, bei dem das Statement vorbereitet wird und bei jedem Insert nur die Werte ausgetauscht werden. Das Spart der DB-Engine eine Menge Arbeit.
Wie das in deinem Programm umgesetzt wird, kommt ganz auf die jeweilige Sprache an. Unter Java mit JDBC verwendet man z. B. dafür ein PreparedStatement-Objekt.
Grüße, Marco
Wie das in deinem Programm umgesetzt wird, kommt ganz auf die jeweilige Sprache an. Unter Java mit JDBC verwendet man z. B. dafür ein PreparedStatement-Objekt.
Grüße, Marco