 |
<cfinsert> and <cfupdate> zijn twee ColdFusion tags waarmee je snel en gemakkelijk de inhoud van een formulier in een database tabel kunt invoegen.
Maar het zijn in hoge mate abstracte methode om data in een ODBC of een OLEDB tabel in te voegen. Van de Server vereist het veel rekentijd. Een verwerkingstechnisch snellere optie is gebruik te maken van de SQL versies UPDATE en INSERT. In dit artikel een vergelijking tussen beide... |
| |
|
CFINSERT en CFUPDATE
<cfinsert> and <cfupdate> zijn twee Cold Fusion tags waarmee
je snel en gemakkelijk de inhoud van een formulier als een nieuw record
in een database tabel kunt invoegen of waarmee je - zonder al te veel
typwerk ! - de inhoud van een bestaande record kunt updaten.
Het zijn in hoge mate abstracte methode om data in een ODBC of een OLEDB
tabel in te voegen. Van de Server vereist het echter veel rekenwerk, juist
omdat het van de CF Server vraagt de juiste FORM-variabelen te
koppelen aan de juiste datavelden in de database tabel.
Een verwerkingstechnisch snellere optie is gebruik te maken van
de SQL versies UPDATE en INSERT. Hieronder vergelijken we beide versies
en laten we het verschil in verwerkingstijd zien.
ColdFusion INSERT
<cfinsert> is de CF-tag waarmee je op een eenvoudige manier de
inhoud van een formulier als een nieuw record in een database tabel kunt
invoeren.
De code van een <cfinsert> opdracht is:
<cfinsert datasource = "[Naam van
de Datasource]"
tablename = "[De
TabelNaam waarin data moet worden ingevoerd]"
formfields = "[Een komma gescheiden lijst van FORM-variabelen]">
De gemiddelde tijd die deze opdracht in een testomgeving nodig heeft
om zijn gegevens te verwerken is: 52.55 ms.

verwerkingstijd CFINSERT
SQL INSERT
SQL INSERT is de SQL-versie om data in een tabel in te voegen. In CF
is dit de tweede optie, naast <cfinsert>, om gegevens in een betaande
database in te voeren.
De code van een SQL INSERT:
<cfquery datasource = "[Naam van de Datasource]">
INSERT
INTO TABLENAME ( [Een komma gescheiden lijst van KolomNamen uit je tabel]
)
VALUES
( [Een komma gescheiden lijst van FORM-variabelen] )
</cfquery>
De gemiddelde tijd die (met dezelfde hoeveelheid data uit CFINSERT) deze
opdracht nodig heeft is: 14.32 ms

verwerkingstijd SQL INSERT
ColdFusion UPDATE
<cfupdate> is de CF-tag waarmee de inhoud van een bestaande record
ge-update kan worden.
Voor <cfupdate> gebruik je de volgende syntax:
<cfupdate datasource = "[Naam van de Datasource]"
tablename = "[De
TabelNaam waarin data moet worden geupdate]"
formfields = "[De
Primaire sleutel van de tabel],[Een komma gescheiden lijst van FORMvariabelen]">
Gemiddelde verwerkingstijd in de testomgeving van CFUPDATE: 154.38 ms

verwerkingstijd CFUPDATE
SQL UPDATE
De SQL-versie van CFUPDATE is UPDATE.
De syntax:
<cfquery datasource = "[Naam van de Datasource]">
UPDATE TABLENAME
SET [Column 1] = [the value of Column
1],
[Column
2] = [the value of Column 2],
[Column
3] = [the value of Column 3]
WHERE ID = [The primary key
from the table]
</cfquery>
Gemiddelde verwerkingstijd van SQL UPDATE: 17.45 ms

verwerkingstijd SQL UPDATE
Tip
Je kunt zien dat de verwerking van de SQL-versies 3-6
sneller gaan dan de respectievelijke CFINSERT-/CFUPDATE versies.
Vanwege de relatieve traagheid zouden CFINSERT en CFUPDATE in een productieomgeving
eigenlijk niet gebruikt mogen worden. Daarnaast neemt, omdat je CF de
ruimte laat voor onjuiste koppeling van FORM-elementen aan DATAvelden,
met het gebruik van CFINSERT en CFUPDATE de kans op ongewenste fouten
bij gegevensopslag toe.
Indien je je webapplicatie wilt versnellen - en de processortijd van
CF Server wilt verkorten - verdient het dus aanbeveling, waar mogelijk,
in plaats van CFINSERT en CFUPDATE de SQL-versies te gebruiken. Het extra
typ-werk moet je er maar even voor over hebben...
Hieronder nog een reëel voorbeeld van een SQL UPDATE, uitgaande
van een FORM:
<cfquery datasource = "VERKOOPDSN">
UPDATE AUTEURS
SET Field_1 = '#FORM.Veld1#',
Field_2
= '#FORM.Veld2#',
Field_3
= '#FORM.Veld3#' ',
Field_4
= '#FORM.Veld4#',
Field_5
= '#FORM.Veld5#',
Field_6
= '#FORM.Veld6#',
Field_7
= '#FORM.Veld7#',
Field_8
= '#FORM.Veld8#'
WHERE ID=158
</cfquery>
De CFUPDATE equivalent:
<CFUPDATE DATASOURCE="VERKOOPDSN" TABLENAME="AUTEURS">
|