以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于关联表 的交叉统计 问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=191072)

--  作者:km007
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2024/3/25 11:38:00
--  
重复测试多次,每次都是65 秒多?


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

--  作者:km007
--  发布时间: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
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2024/3/25 12:11:00
--  

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


--  作者:km007
--  发布时间:2024/3/25 13:52:00
--  
以下是引用有点蓝在2024/3/25 12:11:00的发言:

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

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


--  作者:有点蓝
--  发布时间:2024/3/25 14:00:00
--  
优化一下数据库,比如给关联列加上索引之类的:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=158943&replyID=&skin=1