Foxtable(狐表)用户栏目专家坐堂 → 请教效率


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

主题:请教效率

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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
请教效率  发帖心情 Post By:2018/3/20 17:14:00 [只看该作者]

大师:请问如果我要从后台统计行的数量,是用SQL的ExecuteScalar快?还是生成SQL临时表,再用表的compute快?

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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2018/3/20 18:16:00 [只看该作者]

下面的语句如何优化
Dim st As Date = Date.Now
Dim mc As String
For Each c As DataCol In DataTables("dtpzzbwb").DataCols
    If c.IsString = True Then
        mc = c.name
        Dim cmd As New SQLCommand
        Dim nm As Integer
        cmd.C
        cmd.CommandText ="Select Count(*) Fr  om {dtpzzbwb} Where " & mc & "  = '" & "查找的字符" & "'"
        nm = cmd.ExecuteScalar
        Output.Show(c.name & "-" & nm)
    End If
Next


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/20 19:01:00 [只看该作者]

使用事务,一次性提交

 

http://www.foxtable.com/webhelp/scr/2933.htm

 

或者组合sql语句,一次性查询,不然多次查询会很耗,如

 

Dim st As Date = Date.Now
Dim mc As String
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim str As String = ""
For Each c As DataCol In DataTables("表A").DataCols
    If c.IsString = True Then
        mc = c.name
        str &= "Select Count(*) as 数量 From {表A} Where " & mc & "  = '" & "查找的字符" & "' union all "
    End If
Next
str = str.substring(0, str.length-10)
msgbox(str)
cmd.CommandText = str
dt = cmd.ExecuteReader
For i As Integer = 0 To dt.datarows.count-1
    output.show(i & " " & dt.datarows(i)(”数量"))
next


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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2018/3/20 19:10:00 [只看该作者]

如果用事务,我的代码怎么写?如下对不对?


Try
    Connections().BeginTransaction()
'开始事务

Dim st As Date = Date.Now
Dim mc As String
For Each c As DataCol In DataTables("dtpzzbwb").DataCols
    If c.IsString = True Then
        mc = c.name
        Dim cmd As New SQLCommand
        Dim nm As Integer
        cmd.C
        cmd.CommandText ="Select Count(*) Fr  om {dtpzzbwb} Where " & mc & "  = '" & "查找的字符" & "'"
        nm = cmd.ExecuteScalar
        Output.Show(c.name & "-" & nm)
    End If
Next
Connections("数据源").Commit '提交事务,所有操作生效
Catch
ex As Exception '如果出错
    Connections("数据源").Rollback()
'回滚事务,撤销所有操作

End
Try


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/20 19:12:00 [只看该作者]

参考3楼文字和代码,自行测试。

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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2018/3/20 19:18:00 [只看该作者]

用   这个或者组合sql语句,一次性查询,不然多次查询会很耗,如

显示查询过于复杂,怎么办?

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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2018/3/20 19:43:00 [只看该作者]

我的表100多列,怎么查询语句有字数限制?

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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/3/20 20:11:00 [只看该作者]

那就使用事务呗

 回到顶部