我有1000万点的数据集,我通过它循环和使用的数据集的值更新数2500万的基表。更新查询需要太多的时间
其在where子句是主键所使用的字段。
但还是我没有得到表现仅100K记录在1个小时内得到更新。
如何优化和加速时间在oracle中执行查询。
我使用的命令对象,在vb.net
Connection对象下面的函数执行千万时间更新查询。
public cmd_obj as new oledb.oledbcommand
Strquery="update Table1 set field1='Value from dataset' where field2='value from dataset'" ' where field2 is primary key in base table
Public Function Executenonquery(ByVal Strquery As String) As Int32
Dim intUpdated As Int32 = 0
Try
If VerifyOracleLogin() = True Then ' check oracle connection
cmd_obj.Connection = dbconn
cmd_obj.CommandText = Strquery 'strquery has update query
intUpdated = cmd_obj.ExecuteNonQuery()
return intUpdated
End If
Catch ex As Exception
WriteToErrorLog("Query Execution Error : " & Strquery, ex.Message)
Return -1
End Try
End Function
你的VB代码在这里很有趣;什么是作为Strquery传入的SQL?这是性能问题可能出现的地方。 –
也...你如何将参数数据替换成你的查询? ExecuteNonQuery()方法签名是**反模式**,导致可怕的** Sql Injection安全性问题!**看起来您的整个数据访问层是不安全的,您的首要任务应该是重构以允许正确的参数使用。 –