看板 Visual_Basic 關於我們 聯絡資訊
給你的建議 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