Foxtable(狐表)用户栏目专家坐堂 → 关于导入后保存的效率问题


  共有2453人关注过本帖树形打印复制链接

主题:关于导入后保存的效率问题

帅哥哟,离线,有人找我吗?
zhy400137
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1133 积分:8227 威望:0 精华:0 注册:2013/11/3 19:00:00
关于导入后保存的效率问题  发帖心情 Post By:2016/8/24 11:02:00 [只看该作者]

1070行数据高速合并进系统后,用FOXTABLE保存非常慢,搜索论坛后,发现了以下办法
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=52855&authorid=0&page=0&star=1

但我照写代码后,保存依然很慢,1070行数据要116秒,不清楚是什么原因,请老师指正。
其中因我的ID是自增列,所以在原代码基础上加了个IF判断,如果列名为ID,就不合并进SQL语句。
Dim dt As Date = Date.Now
Dim cmd As New SQLCommand
cmd.C
Dim sql1,sql2 As String
For Each c As Col In Tables("上年实际数导入").Cols
    If c.Name<>"ID" Then
        sql1 + = c.Name & ","
    End If
Next

For Each r As Row In Tables("上年实际数导入").Rows
    sql2 = ""
    For Each c As Col In Tables("上年实际数导入").Cols
        If c.Name<>"ID" Then
            If c.IsDate Then
                sql2 + = "'" & r(c.Name) & "'" & ","
            ElseIf c.IsString Then
                sql2 + = "'" & r(c.Name) & "',"
            ElseIf c.IsBoolean Then
                If r(c.Name) = True Then
                    sql2 + = 1 & ","
                ElseIf r(c.Name) = False Then
                    sql2 + = 0 & ","
                End If
            Else
                sql2 + = r(c.Name) & ","
            End If
        End If
    Next
    cmd.CommandText + = "S elect " & sql2.Trim(",") & vbcrlf & "Union All" & vbcrlf
Next
cmd.CommandText = "I nSert Into 上年实际数导入 (" & sql1.Trim(",") & ")" & vbcrlf & cmd.CommandText.SubString(0,cmd.CommandText.Length - 11)
cmd.ExecuteNonQuery
DataTables("上年实际数导入").Load
Dim tp As TimeSpan
tp = Date.Now - dt
MessageBox.Show(tp.TotalSeconds)

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/24 11:16:00 [只看该作者]

这样都慢,就要考虑是不是网络慢,或者数据库需要优化了。

把生成的sql拿到数据库执行,慢不慢?加载数据慢不慢?

 回到顶部
帅哥哟,离线,有人找我吗?
zhy400137
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1133 积分:8227 威望:0 精华:0 注册:2013/11/3 19:00:00
  发帖心情 Post By:2016/8/24 11:25:00 [只看该作者]

谢谢楼上两位,2楼高手。

 回到顶部