Foxtable(狐表)用户栏目专家坐堂 → 组合查询 加 条件 ,卡死


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

主题:组合查询 加 条件 ,卡死

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
组合查询 加 条件 ,卡死  发帖心情 Post By:2016/7/21 23:12:00 [只看该作者]

 
此主题相关图片如下:4.jpg
按此在新窗口浏览图片

 奇怪,不加条件加载速度还好,加上搜索条件,就直接卡死不动。不知道什么原因。。。

Dim Filter As String
With e.Form.Controls("ComboBox1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "门店 in ( '" & .text.replace(",","','") & " ') "
    End If
End With

With e.Form.Controls("checkedComboBox1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "库位 in ( '" & .text.replace(",","','") & " ') "
    End If
End With

With e.Form.Controls("checkedComboBox2")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "调整期间 in ( '" & .text.replace(",","','") & " ') "
    End If
End With

 

Dim bd1 As New SQLcrossTableBuilder("统计表1","库位销售分析")
Dim dt1 As fxDataSource
bd1.C
bd1.HGroups.AddDef("门店") '添加客户列用于水平分组
bd1.HGroups.AddDef("库位") '添加客户列用于水平分组
bd1.HGroups.AddDef("销售日期",DateGroupEnum.year,"区间") '添加客户列用于水平分组
If e.Form.Controls("CheckBox6").checked = False Then
    bd1.vGroups.AddDef("调整期间","调整期间_{0}_销售量") '添加客户列用于水平分组
Else
    bd1.vGroups.AddDef("调整期间","调整期间_{0}") '添加客户列用于水平分组
End If


bd1.Totals.AddDef("销售数量","销售量") '添加数量列用于统计
If e.Form.Controls("CheckBox6").checked = True Then
    bd1.Totals.AddDef("销售金额","销售额") '添加数量列用于统计
End If
bd1.filter = filter
bd1.CommandTimeOut = 600
dt1 = bd1.BuildDataSource()

 

 

Dim bd2 As New SQLcrossTableBuilder("统计表2","动销量")
Dim dt2 As fxDataSource
bd2.C
bd2.HGroups.AddDef("门店") '添加客户列用于水平分组
bd2.HGroups.AddDef("库位") '添加客户列用于水平分组
bd2.vGroups.AddDef("调整期间","调整期间_{0}_动销量") '添加客户列用于水平分组
bd2.Totals.AddDef("动销量") '添加数量列用于统计
bd2.filter = filter
bd2.CommandTimeOut = 600
dt2 = bd2.BuildDataSource()

 

 

Dim bd3 As New SQLcrossTableBuilder("统计表3","陈列量")
Dim dt3 As fxDataSource
bd3.C
bd3.HGroups.AddDef("门店") '添加客户列用于水平分组
bd3.HGroups.AddDef("库位") '添加客户列用于水平分组
bd3.vGroups.AddDef("调整期间","调整期间_{0}_陈列量") '添加客户列用于水平分组
bd3.Totals.AddDef("陈列量") '添加数量列用于统计
bd3.filter = filter
bd3.CommandTimeOut = 600
dt3 = bd3.BuildDataSource()

 

Dim nms As String() = {"门店","库位"} '指定连接列
dt1.Combine(nms,dt2,nms) '将销售统计数据组合到进货统计数据
dt1.Combine(nms,dt3,nms) '将销售统计数据组合到进货统计数据

Tables(e.Form.Name & "_table1").DataSource = dt1

 

If Tables(e.Form.Name & "_table1").Cols.Contains("区间") Then
    Tables(e.Form.Name & "_table1").Cols("区间").Visible = False
End If



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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/7/21 23:19:00 [只看该作者]

刚才测试了下,库位 和 调整期间 的条件都很快。就是门店 的这个条件很久都不动。

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/7/21 23:22:00 [只看该作者]

都是同样的数据量啊:


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/21 23:37:00 [只看该作者]

 加个门店的索引看看。

 

 你没有选中太多的门店吧?filter的值没有太长吧?


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/7/21 23:57:00 [只看该作者]

没有,目前总共就一个门店。数据量 行数 和其他两个是一样的。

 

怎么加索引呢。。


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/7/21 23:59:00 [只看该作者]

就单单搜索门店 这个条件,也是卡死。。

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


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

如果是sqlserver数据库,打开profiler窗口跟踪一下执行了什么sql,分析一下sql的执行计划

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/22 9:10:00 [只看该作者]

1、添加索引

 

http://www.baidu.com/baidu?wd=sqlserver+%CC%ED%BC%D3%CB%F7%D2%FD&tn=monline_4_dg

 

2、如果你数据量大,而门店重复数据多,那查询自然就慢,in的匹配,是一行一行匹配的。


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/7/22 10:20:00 [只看该作者]

好,谢谢两位老师。我一会试一下!!


 回到顶部