以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  目录树加载时间很长,不知道原因出在哪里  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161871)

--  作者:erdbeer
--  发布时间:2021/4/1 21:01:00
--  目录树加载时间很长,不知道原因出在哪里

局域网内SQL数据库,数据量不是很大,加载的数据在150行左右,每次执行需要在15-20秒左右,不知道原因出在哪里。请大家指教,谢谢



Dim Filter As String 

Dim dr As DataRow = e.Node.DataRow

If e.Node.Text <> "点击加载数据......" Then

    Dim Year As Integer = e.Node.DataRow("")

    Dim Month As Integer = e.Node.DataRow("")

    Dim gb As String = e.Node.DataRow("出库单号")

    Select Case e.Node.Level

        Case 0

 

        Case 1

 

        Case 2

            Filter = "出库单号 = \'" & gb & "\'"

    End Select

End If

DataTables("出库明细").loadFilter = Filter

DataTables("出库明细").Load()


--  作者:有点蓝
--  发布时间:2021/4/1 21:14:00
--  
调试看是哪里慢:http://www.foxtable.com/webhelp/topics/2226.htm

Dim st As Date = Date.Now

DataTables("出库明细").loadFilter = Filter

DataTables("出库明细").Load()

MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") \'计算并显示执行代码所花费的秒数


直接到这里执行慢不慢?http://www.foxtable.com/webhelp/topics/1484.htm

select * from {出库明细} where 出库单号 = ‘放入具体单号’


--  作者:erdbeer
--  发布时间:2021/4/1 21:32:00
--  
时间都花在最后这段代码

DataTables("出库明细").Load()   


select * from {出库明细} where 出库单号 = ‘放入具体单号’
直接这段代码秒结束

我的出库明细表没有事件代码

奇怪的是,在窗口设计时,用预览窗口时,DataTables("出库明细").Load()   这段代码执行不要一秒钟

--  作者:有点蓝
--  发布时间:2021/4/1 21:37:00
--  
那就是表事件,或者表达式列计算影响的。
--  作者:erdbeer
--  发布时间:2021/4/1 21:42:00
--  
没有表事件

有7列表达式列

IsNull([件数],0) * IsNull([数量],0) * IsNull([单价],0)

类似于这样的表达式列,影响有这么大吗?

有没有其他改进的思路途径?

--  作者:有点蓝
--  发布时间:2021/4/1 21:57:00
--  
表达式列如果还有跨表计算,那么还要重算其它表的数据,极端情况下可能会导致所有依赖关联的表的表达式都重算一遍。http://www.foxtable.com/webhelp/topics/1935.htm

个人建议不要过多依赖表达式列,特别是要做动态加载的情况下。

可以考虑改为数据列,使用代码计算
[此贴子已经被作者于2021/4/1 21:57:11编辑过]