Foxtable(狐表)用户栏目专家坐堂 → [求助]奇怪的SQL查询效率问题,头大了


  共有2664人关注过本帖平板打印复制链接

主题:[求助]奇怪的SQL查询效率问题,头大了

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]奇怪的SQL查询效率问题,头大了  发帖心情 Post By:2021/8/9 13:41:00 [只看该作者]

以下是涉及的部分代码:
Dim rq1 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker_起始日期")
Dim rq2 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker_结束日期")
If rq1.Value = Nothing Then
    rq1.Value = #5/1/2017#
End If

If rq2.Value = Nothing Then
    rq2.Value = _dt工序合并表.SQLCompute("MAX(日期)")
End If
Dim filter As String
filter = "a.起始时间  >= '" & rq1.Value & "' And a.起始时间 < '" & rq2.Value.AddDays(1) & "' And (a.工序 = '原料采购入库' Or a.工序 = '来料加工入库' Or a.工序 = '并卷转入' Or a.工序 = '盘盈入库')"
Tables(e.Form.Name & "_Table1").Fill("s elect '' As 顺序号,a.母卷号,a.牌号,a.工序,a.往来公司,a.起始时间 As 入库时间,a.厚度,a.宽度,a.重量 As 原料重量,(s elect Sum(重量) from {工序合并表} b where b.库存标记 = 1 And a.母卷号 = b.母卷号 And b.起始时间  >= '" & rq1.Value & "' And b.工序 <> '废品入库' And b.工序 <> '盘亏出库' And b.工序 <> '引带入库 ') as 成材重量 from {工序合并表} as a where " & filter ,"ShcsErpSql",True)

代码执行的结果没有问题,但是,起始日期不录,几秒就能出结果,录2021-4-1号,也是几秒出结果,录2021-4-3,就要20秒出结果,随便输入一些日期,有的日期执行效率非常高,有的非常慢,这是何解啊
一般情况下,我如果不录日期,代码自动使用的起始日期是#5/1/2017#,结束日期是今天,按理来说,这个时间跨度应该比起始日期是2021-4-10大,查询效率慢才对,可结果完全不是这么回事,问题应该就出在红字部分,因为我把红字去掉,查询结果的速度全很快。
实在想不明白,请老师解惑下,谢谢!

 回到顶部