[VB2010]如何加速資料庫新增一筆的速度?

我有一個用Access建立的資料庫,有160萬筆,為了檢查資料庫全不全,寫了一個程式,若發現資料庫中沒有該筆資料,就新增一筆進去,但發現這樣速度實在有夠慢,共要8個多小時才能跑完。程式如下:

若用txt檔,而不用資料庫的話,只要10分鐘就跑完咧~~實在差很多。

Dim DTDate As Date Dim sDate, s代號, s公司, sO, sH, SL, sC, sV As String Dim UpdateCmd As String Dim cmd As OleDbCommand Dim myDT As DataTable For ii = 1 To 要下載的股票_TotRec '共有1400家公司 My.Application.DoEvents() 10 Progb1.Value = ii 11 s代號 = 要下載的股票(ii, 1) 12 s公司 = 要下載的股票(ii, 2) 13 sPath = "G:\谷谷下載原始檔\RAW個股歷史資料Yahoo\" 14 sF1 = s代號 & ".sky" 15 If My.Computer.FileSystem.FileExists(sPath & sF1) Then '檔案若存在的話 16 sr1 = New StreamReader(sPath & sF1) '這裡的檔案,沒有中文 17 sr1.ReadLine() 'Title 18 19 While Not sr1.EndOfStream 20 sArray = Split(sr1.ReadLine(), ",") 21 DTDate = CDate(sArray(0)) 22 sDate = DTDate.Year.ToString & Format(DTDate.Month, "00") & Format(DTDate.Day, "00") 23 sCodeDate = s代號 & "_" & sDate '1101_20100808 24 25 sql = "SELECT * FROM K線_日 WHERE CodeDate = '" & sCodeDate & "'" 26 myDA = New OleDbDataAdapter(sql, mycn) 27 myDA.Fill(myDS, "K線_日") 28 myDT = myDS.Tables("K線_日") 29 jj = myDT.Rows.Count 30 '若K線資料庫中沒有,就插入一行 31 If jj = 100 Then 32 UpdateCmd = "INSERT INTO K線_日(CodeDate, Code, Date, CoName, Open, High, Low, Close, Volume)" & _ 33 "Values (@CodeDate, @Code, @Date, @CoName, @Open, @High, @Low, @Close, @Volume)" 34 cmd = New OleDbCommand(UpdateCmd, mycn) 35 cmd.Parameters.Add(New OleDbParameter("@CodeDate", OleDbType.Char)) 36 cmd.Parameters.Add(New OleDbParameter("@Code", OleDbType.Char)) 38 cmd.Parameters.Add(New OleDbParameter("@CoName", OleDbType.Char)) 45 cmd.Parameters("@CodeDate").Value = sCodeDate 46 cmd.Parameters("@Code").Value = s代號 48 cmd.Parameters("@CoName").Value = s公司 54 cmd.ExecuteNonQuery() 55 End If 56 'myDT.Clear() 57 End While 58 sr1.Close() End If Next sr1.Dispose()

2 個解答

評分
  • 9 年前
    最佳解答

    可以試試看 Linq,VB 2010 可以使用.

    範例 : http://msdn.microsoft.com/zh-tw/vbasic/bb688088

    至於詳細寫法,自己練習看看吧!!

    參考資料: SyneArt
    • Commenter avatar登入以對解答發表意見
  • 160萬筆記錄,卻用 Access這種「檔案式」的資料庫來處理

    ...... Orz

    難道,您不知道 SQL Server有推出免費的、

    跟正式版功能完全一樣的 Express版嗎?

    SQL Server 2005 Express

    SQL Server 2008 Express

    2012-01-30 18:00:17 補充:

    這也要看您的資料表示怎麼規劃的?

    資料庫必經經過規劃與調整,才能發揮效能

    2012-01-30 18:23:42 補充:

    ASP.NET專題實務 與 教學網站

    http://www.dotblogs.com.tw/mis2000lab/

    • Commenter avatar登入以對解答發表意見
還有問題?馬上發問,尋求解答。