作者fumizuki (蒙面加菲狮)
看板Visual_Basic
标题Re: [.NET] 资料库查询更新很慢??
时间Thu May 1 21:06:00 2008
给你的建议
1. where 条件中的栏位要加非唯一值索引(Index)
2. 不要在回圈中反覆的查询同一个资料表,你可以丢到 DataSet 中快取
DataSet.DefaultView.RowFilter = "栏位=值"
'筛选符合条件的资料列
DataSet.DefaultView.Count
'符合筛选条件的资料列数量
DataSet.DefaultView(资料列)(资料行)
'读取栏位的值
3. 不要在回圈中执行 Update、Insert、Delete 等命令
sqlStr += "update .... " + vbCrLf
sqlStr += "insert .... " + vbCrLf
把 Execute... 丢到回圈外面执行
※ 引述《ponyrabbit (也太卷了吧!!囧)》之铭言:
: 我的程式要读取一个文字档
: 里面大概有两万行的资料
: 要一行一行截取各行的某栏去资料库查询
: 若已存在就做更新,不存在就做新增
: 不晓得为什麽每一笔更新/新增(不晓得是两个都慢还是有快有慢)都颇慢的感觉
: 我另一个程式单纯做新增,大概有六万多快七万笔的资料(也是读文字档)
: 这个程式就很快,大约十几二十分就结束了
: 请问是因为有查询跟更新所以才会这麽慢吗??
: 我的语法如下
: while balahbalah~
: QuerySql = "select * from SymQuery where Part_no = '" + CompNo.ToString +"'"
: myConn = New System.Data.SqlClient.SqlCommand(QuerySql, Conn)
: myRes = myConn.ExecuteReader()
: If myRes.HasRows Then
: myRes.Close()
: SqlStr = "update SymQuery set Comp_Property = '" + Comp.ToString + "',
: Pro_value.ToString + "' where Part_no = '" + CompNo.ToString + "'"
: Else
: myRes.Close()
: SqlStr = "insert into SymQuery (Part_no, Comp_property, Pro_value) values
: ('" + CompNo.ToString + "', '" + Comp.ToString + "', '"
: + Pro_value.ToString + "')"
: End If
: myConn = New System.Data.SqlClient.SqlCommand(SqlStr, Conn)
: myConn.ExecuteNonQuery()
: Loop
: 请问以上是有哪个语法导致整个速度很慢的吗??
--
▃▅▇▆▄ ▆▂▃ `
逝去感情如何能留住,半点痴情遗留殊不易,██▅▇▄▃ ▇▃▂" .
█████████▃i ▁▄▇
更多凄凄惨惨的遭遇…………██▆▃ █▅▆▃ˍ▄*
◢ ▂█▄▇▅▂▌.
我不知道,王~八~蛋~~! ▂▆███ █▄▃ 。fumizuki。Check。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.194.100.4