Foxtable(狐表)用户栏目专家坐堂 → [求助]关于关联表 的交叉统计 问题


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

主题:[求助]关于关联表 的交叉统计 问题

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


加好友 发短信
等级:一尾狐 帖子:480 积分:5767 威望:0 精华:0 注册:2016/1/28 2:59:00
[求助]关于关联表 的交叉统计 问题  发帖心情 Post By:2024/3/25 11:28:00 [只看该作者]

表名:销售明细表
字段:日期、产品编号、客户编号、数量、金额……

表名:产品库
字段:产品编号、产品名称、单价……
---------------------------------------------------------------------
关联统计代码如下:
Dim st As Date = Date.Now

Dim b As New S Q LCrossTableBuilder("统计表1","销售明细表")
b.Connection Name = "数据源"
b.AddTable("销售明细表","产品编号","产品库","产品编号")
b.HGroups.AddDef("{销售明细表}.[客户编号]")
b.HGroups.AddDef("{产品库}.[单价]")
b.VGroups.AddDef("日期", DateGroupEnum.Year, "{0}年份")
b.VGroups.AddDef("日期", "{0}月份")
b.Totals.AddDef("{产品库}.[数量]")
b.Totals.AddExp("销售金额","{产品库}.[数量] * {产品库}.[单价]") '
b.Filter = "year(日期) = '2024' and month(日期) = 10"
b.Build 
M aint able = Tables("统计表1")

MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")

---------------------------------------------------------------------
问题如下:
当 b.Filter = "year(日期) = '2023' and month(日期) = '10'" 时,耗时 1 秒多(正常)
当 b.Filter = "year(日期) = '2023' and month(日期) = '11'" 时,耗时 65 秒多(异常)
当 b.Filter = "year(日期) = '2023' and month(日期) = 12" 时,耗时 68 秒多(异常)
当 b.Filter = "year(日期) = '2023' and month(日期) in ('10','11','12')" 时,耗时 1 秒多(正常)

请问这种情况会是什么原因导致的呢?目前还没找出原因所在
[此贴子已经被作者于2024/3/25 11:31:32编辑过]

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


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

重复测试多次,每次都是65 秒多?


如果是SqlServer,跟踪一下后台执行了什么sql,把这个sql放到数据库里执行看看要多长时间

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


加好友 发短信
等级:一尾狐 帖子:480 积分:5767 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2024/3/25 11:47:00 [只看该作者]

以下是引用有点蓝在2024/3/25 11:38:00的发言:
重复测试多次,每次都是65 秒多?


如果是SqlServer,跟踪一下后台执行了什么sql,把这个sql放到数据库里执行看看要多长时间

就 单独 统计 11月 和 12月 每次至少六十多秒,有时甚至上百秒
但是奇怪的是 如果多个月范围(10月、11月、12月)耗时就正常;如果多个月范围(11月、12月)耗时就异常



服务器在对方那里,无法进去操作 SQL语句跟踪

[此贴子已经被作者于2024/3/25 12:01:43编辑过]

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


加好友 发短信
等级:一尾狐 帖子:480 积分:5767 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2024/3/25 11:53:00 [只看该作者]

查询表:销售数据表
左表:销售明细表  关联字段:产品编号  ; 右表:产品库  关联字段:产品编号
列:{销售明细表}.*,
{产品库}.*
---------------------------------------------------------------------
条件:
当  year(日期) = '2023' and month(日期) = '10' 时,耗时 1 秒多(正常)
当 year(日期) = '2023' and month(日期) = '11' 时,耗时 超 30 秒(异常)
当 year(日期) = '2023' and month(日期) = '12' 时,耗时 超 30 秒(异常)
当 year(日期) = '2023' and month(日期) in ('10','11','12') 时,耗时 1 秒多(正常)
当 year(日期) = '2023' and month(日期) in ('11','12') 时,耗时 超 30 秒(异常)
[此贴子已经被作者于2024/3/25 11:53:58编辑过]

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


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


这种问题需要跟踪数据库的执行情况,要么到现场调试,要么让对方自行调试。做开发没有数据库的掌控权,很多问题都无法处理的


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


加好友 发短信
等级:一尾狐 帖子:480 积分:5767 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2024/3/25 13:52:00 [只看该作者]

以下是引用有点蓝在2024/3/25 12:11:00的发言:

这种问题需要跟踪数据库的执行情况,要么到现场调试,要么让对方自行调试。做开发没有数据库的掌控权,很多问题都无法处理的

没有跟产品表做关联 的话 就正常了


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


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

优化一下数据库,比如给关联列加上索引之类的:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=158943&replyID=&skin=1

 回到顶部