gpt4 book ai didi

vb.net - 为什么数据表的加载方法有时这么慢?

转载 作者:行者123 更新时间:2023-12-03 21:43:47 25 4
gpt4 key购买 nike

该项目是 ASP/VB.net 中的 Web 应用程序。问题是有些页面速度慢得令人难以置信。在试图追踪瓶颈后,发现它是用查询结果填充数据表时的加载方法。

我们使用的是 Oracle 数据库,查询是在存储过程中执行的。例如,我们在一个过程中有一个相对简单的 select 语句,它返回 2 列和 6 行,确定执行大约需要 0.015 秒。然而,将 OracleDataReader 加载到数据表中平均需要 7 秒——对于如此小的记录集来说,这是一个荒谬的时间。在弄乱了查询之后,我发现一个简单的解码语句似乎导致了这个问题。 decode语句的用法类似如下:

在哪里 DECODE(iBln, 1, column1, column2) 在 iDate1 和 iDate2 之间

iBln 变量只是一个传入的数字,用作 bool 变量,用于确定哪一列应位于两个日期之间。如果我注释掉这个解码语句并将其简单地设置为“column1 BETWEEN iDate1 和 iDate2”,那么加载方法根本不需要时间,这表明它确实是导致问题的解码语句。

因此,我只是希望收到任何人的来信,了解造成这种情况的原因或解决方法。这是一个简单的解码,它如何影响加载方法呢?

最佳答案

我会验证 column1 和 column2 的索引是否存在。如果是这样,可能的问题是 DECODE 正在阻止使用索引。尝试重写为:

WHERE ( ( iBin = 1 AND column1 BETWEEN iDate1 AND iDate2)
OR
( (iBin IS NULL OR iBin <> 1) AND column2 BETWEEN iDate1 AND iDate2)
)

关于vb.net - 为什么数据表的加载方法有时这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6494946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com