该项目是ASP / VB.net中的Web应用程序.问题是有些页面令人费解.在尝试追踪瓶颈之后,在使用查询结果填充数据表时发现它是加载方法. 我们使用的是Oracle数据库,查询在存储过程中执行.作为
我们使用的是Oracle数据库,查询在存储过程中执行.作为一个例子,我们在一个过程中有一个相对简单的select语句,它返回2列6行,确定需要大约0.015秒才能执行.但是,将OracleDataReader加载到数据表中平均需要7秒钟 – 对于如此小的记录集来说,这是一段荒谬的时间.在搞乱查询之后,我发现一个简单的解码语句似乎导致了这个问题. decode语句的用法类似如下:
哪里
在iDate1和iDate2之间的DECODE(iBln,1,column1,column2)
iBln变量只是一个传入的数字,用作布尔变量,用于确定哪个列应该在两个日期之间.如果我将这个解码语句注释掉并简单地将它命名为“column1 BETWEEN iDate1和iDate2”,那么load方法根本就没有时间,表明它确实是导致问题的解码语句.
所以我只是希望听到任何人可以知道是什么导致了这个或如何解决它.这是一个简单的解码,它甚至如何影响加载方法?
我将验证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) )