我的问题与Postgres视图的缓慢性能有关。我刚刚花了几个小时处理这个问题,现在我完全没有想法了。
我创建了一个可以根据几个表动态计算数据的视图,在使用一个特定条件之前,视图本身具有可接受的性能。
视图的名称是RV_Replenish
,最重要的列是QtyToOrder
,它是根据其他一些表动态计算的。
对我来说很奇怪是下两个问题:
1. select count(*) from rv_replenish
where (case when qtytoorder>0 then 1 else 0 end)>0
2. select count(*) from rv_replenish
where (case when qtytoorder>0 then 1 else 0 end)=1
执行第二个查询比第一个查询慢10倍,但返回的数字相同。可能是什么原因?原因可能与postgres服务器的设置有关,因为我在本地和生产开发上进行了测试。在本地开发中,两个查询的执行相同,但生产服务器执行第二个变量的速度非常慢。