Parameters.Add faster than Parameters.AddWithValue
-
Monday, March 12, 2007 11:48 AM
Hi,
i noticed that when i use Parameters.Add it is more fast than Parameters.AddWithValue. The difference time work between 2 method it is very important, expecially when they are used into a loop. Here there's an example:
' Using Parameters.Add
cmd.Parameters.Add(
"@id", SqlDbType.NVarChar)cmd.Parameters.Add(
"@name", SqlDbType.NVarChar)cmd.Parameters.Add(
"@address", SqlDbType.NVarChar) For i As Integer = 0 To 100cmd.Parameters.Item(0).Value = "example"
cmd.Parameters.Item(1).Value = "example"
cmd.Parameters.Item(2).Value = "example"
Next' Using Parameters.AddWithValue
For i As Integer = 0 To 100
cmd.Parameters.AddWithValue("@id", "example")
cmd.Parameters.AddWithValue("@name", "example")
cmd.Parameters.AddWithValue("@address", "example")
NextIs that possible , or i wrong something to use method?
All Replies
-
Monday, March 12, 2007 11:59 AM
In you exampel the first one is faster, because you create the parameters only once and change only the value. In the second example you always add new parameters to it. If you look at the parameters after the first loop you have 3 in the collection. After the second loop you should have 100 + 3 in the collection.
That's why your second loop is slower: it creates 100 parameters, while the first one creates three and changes then only the value of the parameters.
Parameters.Add and Parameters.AddWithValue always create a new parameter. That's what's making it slower: object creation takes some time!
-
Monday, March 12, 2007 12:50 PMSo in a loop i must use the first one (Parameters.Add). Thanks
-
Monday, March 12, 2007 1:11 PM
pol86 wrote: So in a loop i must use the first one (Parameters.Add). Thanks To have speed measurement done properly you need to do this for the first loop:
For i As Integer = 0 To 100cmd.Parameters.Add("@id", SqlDbType.NVarChar)
cmd.Parameters.Add(
"@name", SqlDbType.NVarChar)cmd.Parameters.Add(
"@address", SqlDbType.NVarChar) cmd.Parameters.Item(0).Value = "example"cmd.Parameters.Item(1).Value = "example"
cmd.Parameters.Item(2).Value = "example"
Next
Now look what is faster :) Both should be even!
-
Monday, March 12, 2007 1:25 PMthanks


