用户可以在上午10点之前运行报告。在相同的报告变得非常缓慢之后,有时用户只是没有耐心等待。经过一些故障排除后,我计算了导致延迟的列。它是使用函数的计算列以产生结果。
大约在同一时间我又抱怨慢跑报告,这总是很好。经过一些故障排除后,我发现导致延迟的列:
where (Amount - PTD) <> 0
同样,Amount
列是计算列。
所以我的问题是:
为什么所有突然计算的列始终是报告的一部分,开始显着降低性能?即使没有人使用数据库。
上午10点左右会发生什么事?
如果我将这些列保留下来会有什么不利之处?
谢谢
答案 0 :(得分:1)
你在这里没有提供很多细节 - 所以我只能回答一般问题。
因此,总的来说 - 数据库性能往往是由瓶颈决定的。查询可能在具有1条记录,10条记录,1000条记录,100000条记录的表上正常运行 - 然后在100001条记录中,它突然变慢。这是因为你已超出系统中的某些边界 - 例如,数据不再适合内存。
确定这些瓶颈非常困难,甚至更难预测 - 但请关注perfmon,看看你的CPU,磁盘i / o和内存统计数据在做什么。
计算列本身不太可能成为问题 - 但在&#34;中使用&#34;如果您没有该列的索引,则声明(特别是使用其他计算)可能会很慢。在您的示例中,您可以为(Amount - PTD)
创建另一个计算列,并在该列上创建索引。