Performance 博士后看慢成绩

Performance 博士后看慢成绩,performance,postgresql,view,comparison,Performance,Postgresql,View,Comparison,我的问题与博士后观点的缓慢表现有关。我刚刚花了几个小时讨论这个问题,现在我完全没有主意了 我创建了一个视图,它可以基于多个表动态计算数据,视图本身在使用一个特定条件之前具有可接受的性能 视图的名称是RV_repundy,最重要的列是QtyToOrder,它是根据一些其他表动态计算的 下面两个问题对我来说很奇怪: 1. select count(*) from rv_replenish where (case when qtytoorder>0 then 1 else 0 end)&g

我的问题与博士后观点的缓慢表现有关。我刚刚花了几个小时讨论这个问题,现在我完全没有主意了

我创建了一个视图,它可以基于多个表动态计算数据,视图本身在使用一个特定条件之前具有可接受的性能

视图的名称是
RV_repundy
,最重要的列是
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服务器的设置有关,因为我在本地和产品开发中测试了它。在本地开发中,两个查询的执行是相同的,但生产服务器执行第二个变量的速度非常慢。

从rv_repriful中选择count(*)有什么问题,其中qtytoorder>0为什么要编写这样的where条件?你在这列上创建了索引吗?你能给我们看一下解释分析的结果吗?嗨,首先,谢谢你的回复。。。条件只是一个示例…我的目标是在所提到的视图中创建列,如
当qtytoorder>0时,则“R”结束为参数x
…使用此视图的框架需要具有字符串值的列参数x(字符串列可以用作报告中的过滤器)…我将在几个小时后发布解释分析的结果…但我想知道为什么这种行为如此奇怪?与QtyToOrder的比较非常快,但与where CASE的比较速度较慢。。。重要的是,QTYTORDER是在视图中动态计算的,它不是表的列…最后,我认为索引coldnt不是问题,因为直接到QTYTORDER的比较速度很快。
select count(*)从rv_infull,其中showproducts='REP'
需要(30秒)
select count(*)从rv_补充,其中qtyToOrder>0
采用(3sec)列ShowProducts它只不过是当mquery.qtyToOrder>0时的
情况,然后“REP”ELSE NULL结束为ShowProducts
这就是为什么我想知道为什么与
ShowProducts
列的比较如此缓慢的原因。。