And if it helps,
see below results of my explain(analyze, buffers) where it is worse on
9.2.1 than on 9.1.4 (both on the same hardware):

Original view:
pg 9.1.4:
Nested Loop  (cost=237.46..289.36 rows=1 width=254) (actual 
time=3998.609..5870.697 rows=1848 loops=1)
  Buffers: shared hit=1044261 read=5384
  ->  Nested Loop  (cost=237.46..281.07 rows=1 width=330) (actual 
time=3998.501..5844.433 rows=1848 loops=1)
        Buffers: shared hit=1040565 read=5384
        ->  Nested Loop  (cost=237.46..272.77 rows=1 width=672) (actual 
time=3998.357..5791.577 rows=1848 loops=1)
              Buffers: shared hit=1034973 read=5384
              ->  Nested Loop  (cost=237.46..254.75 rows=1 width=558) (actual 
time=3997.604..4086.442 rows=308 loops=1)
                    Buffers: shared hit=671036 read=5381
                    ->  HashAggregate  (cost=237.46..237.47 rows=1 width=342) 
(actual time=3995.176..3996.270 rows=506 loops=1)
                          Buffers: shared hit=659911 read=5138
                          ->  Nested Loop  (cost=4.28..237.45 rows=1 width=342) 
(actual time=2.679..3985.891 rows=3036 loops=1)
                                Buffers: shared hit=659911 read=5138
                                ->  Nested Loop  (cost=4.28..229.15 rows=1 
width=304) (actual time=2.603..3896.570 rows=3036 loops=1)
                                      Buffers: shared hit=650736 read=5138
                                      ->  Nested Loop  (cost=4.28..211.13 
rows=1 width=190) (actual time=1.114..680.538 rows=2511 loops=1)
                                            Buffers: shared hit=51214 read=2265
                                            ->  Bitmap Heap Scan on testtable3 
ug  (cost=4.28..12.75 rows=1 width=76) (actual time=0.069..0.111 rows=5 loops=1)
                                                  Recheck Cond: ((ida)::text = 
'a4'::text)
                                                  Filter: (status = 'A'::bpchar)
                                                  Buffers: shared hit=3
                                                  ->  Bitmap Index Scan on 
pk_testtable3  (cost=0.00..4.28 rows=4 width=0) (actual time=0.034..0.034 
rows=10 loops=1)
                                                        Index Cond: 
((ida)::text = 'a4'::text)
                                                        Buffers: shared hit=2
                                            ->  Index Scan using pk_testtable1 
on testtable1 tt1  (cost=0.00..198.37 rows=1 width=222) (actual 
time=29.150..134.763 rows=502
loops=5)
                                                  Index Cond: (((ida)::text = 
'a4'::text) AND ((idd)::text = (ug.idd)::text) AND ((parname)::text = 
'PARNAME1'::text))
                                                  Filter: ((val = 0::numeric) 
AND (lvl = (SubPlan 6)))
                                                  Buffers: shared hit=51211 
read=2265
                                                  SubPlan 6
                                                    ->  Result  
(cost=8.62..8.63 rows=1 width=0) (actual time=0.051..0.052 rows=1 loops=7500)
                                                          Buffers: shared 
hit=29825 read=175
                                                          InitPlan 5 (returns 
$17)
                                                            ->  Limit  
(cost=0.00..8.62 rows=1 width=32) (actual time=0.044..0.045 rows=1 loops=7500)
                                                                  Buffers: 
shared hit=29825 read=175
                                                                  ->  Index 
Scan Backward using pk_testtable1 on testtable1 tt1a  (cost=0.00..8.62 rows=1 
width=32) (actual
time=0.040..0.040 rows=1 loops=7500)
                                                                        Index 
Cond: (((tt1.ida)::text = (ida)::text) AND ((tt1.idb)::text = (idb)::text) AND
((tt1.idc)::text = (idc)::text) AND ((tt1.idd)::text = (idd)::text) AND 
((tt1.parname)::text = (parname)::text) AND (lvl IS NOT NULL) AND (lvl <= 
400::numeric))
                                                                        
Buffers: shared hit=29825 read=175
                                      ->  Index Scan using pk_testtable2 on 
testtable2 tt2  (cost=0.00..18.00 rows=1 width=146) (actual time=0.218..1.272 
rows=1 loops=2511)
                                            Index Cond: (((ida)::text = 
'a4'::text) AND ((idb)::text = (tt1.idb)::text) AND ((idc)::text = 
(tt1.idc)::text))
                                            Filter: (lvl = (SubPlan 4))
                                            Buffers: shared hit=599522 read=2873
                                            SubPlan 4
                                              ->  Aggregate  (cost=9.00..9.01 
rows=1 width=32) (actual time=0.162..0.163 rows=1 loops=18216)
                                                    Buffers: shared hit=575373 
read=1023
                                                    ->  Index Scan using 
pk_testtable2 on testtable2 tt2a  (cost=0.00..8.99 rows=1 width=32) (actual 
time=0.040..0.108
rows=28 loops=18216)
                                                          Index Cond: 
(((tt2.ida)::text = (ida)::text) AND ((tt2.idb)::text = (idb)::text) AND 
((tt2.idc)::text =
(idc)::text) AND (lvl <= 400::numeric))
                                                          Buffers: shared 
hit=575373 read=1023
                                ->  Index Scan using pk_testtable4 on 
testtable4 tt4  (cost=0.00..8.29 rows=1 width=114) (actual time=0.021..0.023 
rows=1 loops=3036)
                                      Index Cond: (((ida)::text = 'a4'::text) 
AND ((idb)::text = (tt2.idb)::text) AND ((idc)::text = (tt2.idc)::text))
                                      Buffers: shared hit=9175
                    ->  Index Scan using pk_testtable1 on testtable1 tt1  
(cost=0.00..17.26 rows=1 width=254) (actual time=0.086..0.173 rows=1 loops=506)
                          Index Cond: (((ida)::text = 'a4'::text) AND 
((idb)::text = (tt4.idb)::text) AND ((idc)::text = (tt4.idc)::text) AND 
((idd)::text = (ug.idd)::text))
                          Filter: (((idd)::text <> 'dddd8'::text) AND 
(upper((idc)::text) ~~ 'CCC5%'::text) AND (lvl = (SubPlan 3)))
                          Buffers: shared hit=11125 read=243
                          SubPlan 3
                            ->  Result  (cost=8.62..8.63 rows=1 width=0) 
(actual time=0.048..0.049 rows=1 loops=924)
                                  Buffers: shared hit=3681 read=15
                                  InitPlan 2 (returns $8)
                                    ->  Limit  (cost=0.00..8.62 rows=1 
width=32) (actual time=0.042..0.044 rows=1 loops=924)
                                          Buffers: shared hit=3681 read=15
                                          ->  Index Scan Backward using 
pk_testtable1 on testtable1 tt1a  (cost=0.00..8.62 rows=1 width=32) (actual 
time=0.039..0.039 rows=1
loops=924)
                                                Index Cond: (((tt1.ida)::text = 
(ida)::text) AND ((tt1.idb)::text = (idb)::text) AND ((tt1.idc)::text = 
(idc)::text) AND
((tt1.idd)::text = (idd)::text) AND ((tt1.parname)::text = (parname)::text) AND 
(lvl IS NOT NULL) AND (lvl <= 400::numeric))
                                                Buffers: shared hit=3681 read=15
              ->  Index Scan using pk_testtable2 on testtable2 tt2  
(cost=0.00..18.00 rows=1 width=146) (actual time=0.767..5.517 rows=6 loops=308)
                    Index Cond: (((ida)::text = 'a4'::text) AND ((idb)::text = 
(tt1.idb)::text) AND ((idc)::text = (tt1.idc)::text))
                    Filter: (lvl = (SubPlan 1))
                    Buffers: shared hit=363937 read=3
                    SubPlan 1
                      ->  Aggregate  (cost=9.00..9.01 rows=1 width=32) (actual 
time=0.146..0.147 rows=1 loops=11088)
                            Buffers: shared hit=351792
                            ->  Index Scan using pk_testtable2 on testtable2 
tt2a  (cost=0.00..8.99 rows=1 width=32) (actual time=0.039..0.100 rows=28 
loops=11088)
                                  Index Cond: (((tt2.ida)::text = (ida)::text) 
AND ((tt2.idb)::text = (idb)::text) AND ((tt2.idc)::text = (idc)::text) AND 
(lvl <=
400::numeric))
                                  Buffers: shared hit=351792
        ->  Index Scan using pk_testtable4 on testtable4 tt4  (cost=0.00..8.29 
rows=1 width=114) (actual time=0.021..0.023 rows=1 loops=1848)
              Index Cond: (((ida)::text = 'a4'::text) AND ((idb)::text = 
(tt2.idb)::text) AND ((idc)::text = (tt2.idc)::text))
              Buffers: shared hit=5592
  ->  Index Scan using pk_testtable3 on testtable3 tt3  (cost=0.00..8.28 rows=1 
width=76) (actual time=0.007..0.009 rows=1 loops=1848)
        Index Cond: (((ida)::text = 'a4'::text) AND ((idd)::text = 
(tt1.idd)::text))
        Filter: (status = 'A'::bpchar)
        Buffers: shared hit=3696
Total runtime: 5874.032 ms

9.2.1:
Nested Loop  (cost=256.64..327.24 rows=1 width=254) (actual 
time=4299.081..6490.252 rows=1848 loops=1)
  Buffers: shared hit=1056517 read=6024 written=184
  ->  Nested Loop  (cost=256.64..296.30 rows=1 width=596) (actual 
time=4298.154..4587.980 rows=308 loops=1)
        Join Filter: ((tt3.idd)::text = (tt1.idd)::text)
        Rows Removed by Join Filter: 616
        Buffers: shared hit=692583 read=6018 written=184
        ->  Nested Loop  (cost=256.64..272.87 rows=1 width=532) (actual 
time=4287.180..4319.431 rows=506 loops=1)
              Buffers: shared hit=662451 read=5139
              ->  Nested Loop  (cost=256.64..264.94 rows=1 width=418) (actual 
time=4287.098..4299.564 rows=506 loops=1)
                    Buffers: shared hit=660922 read=5139
                    ->  HashAggregate  (cost=256.64..256.65 rows=1 width=342) 
(actual time=4286.884..4288.415 rows=506 loops=1)
                          Buffers: shared hit=659910 read=5139
                          ->  Nested Loop  (cost=4.28..256.63 rows=1 width=342) 
(actual time=2.429..4273.182 rows=3036 loops=1)
                                Buffers: shared hit=659910 read=5139
                                ->  Nested Loop  (cost=4.28..248.23 rows=1 
width=304) (actual time=2.363..4171.124 rows=3036 loops=1)
                                      Buffers: shared hit=650735 read=5139
                                      ->  Nested Loop  (cost=4.28..217.28 
rows=1 width=190) (actual time=0.781..738.720 rows=2511 loops=1)
                                            Buffers: shared hit=51213 read=2266
                                            ->  Bitmap Heap Scan on testtable3 
ug  (cost=4.28..12.75 rows=1 width=76) (actual time=0.064..0.122 rows=5 loops=1)
                                                  Recheck Cond: ((ida)::text = 
'a4'::text)
                                                  Filter: (status = 'A'::bpchar)
                                                  Rows Removed by Filter: 5
                                                  Buffers: shared hit=3
                                                  ->  Bitmap Index Scan on 
pk_testtable3  (cost=0.00..4.28 rows=4 width=0) (actual time=0.035..0.035 
rows=10 loops=1)
                                                        Index Cond: 
((ida)::text = 'a4'::text)
                                                        Buffers: shared hit=2
                                            ->  Index Scan using pk_testtable1 
on testtable1 tt1  (cost=0.00..204.52 rows=1 width=222) (actual 
time=32.053..145.921 rows=502
loops=5)
                                                  Index Cond: (((ida)::text = 
'a4'::text) AND ((idd)::text = (ug.idd)::text) AND ((parname)::text = 
'PARNAME1'::text))
                                                  Filter: ((val = 0::numeric) 
AND (lvl = (SubPlan 6)))
                                                  Rows Removed by Filter: 2498
                                                  Buffers: shared hit=51210 
read=2266
                                                  SubPlan 6
                                                    ->  Result  
(cost=11.70..11.71 rows=1 width=0) (actual time=0.053..0.055 rows=1 loops=7500)
                                                          Buffers: shared 
hit=29825 read=175
                                                          InitPlan 5 (returns 
$17)
                                                            ->  Limit  
(cost=0.00..11.70 rows=1 width=32) (actual time=0.046..0.048 rows=1 loops=7500)
                                                                  Buffers: 
shared hit=29825 read=175
                                                                  ->  Index 
Only Scan Backward using pk_testtable1 on testtable1 tt1a  (cost=0.00..11.70 
rows=1 width=32)
(actual time=0.042..0.042 rows=1 loops=7500)
                                                                        Index 
Cond: ((ida = (tt1.ida)::text) AND (idb = (tt1.idb)::text) AND (idc = 
(tt1.idc)::text) AND
(idd = (tt1.idd)::text) AND (parname = (tt1.parname)::text) AND (lvl IS NOT 
NULL) AND (lvl <= 400::numeric))
                                                                        Heap 
Fetches: 7500
                                                                        
Buffers: shared hit=29825 read=175
                                      ->  Index Only Scan using pk_testtable2 
on testtable2 tt2  (cost=0.00..30.93 rows=1 width=146) (actual 
time=0.236..1.359 rows=1
loops=2511)
                                            Index Cond: ((ida = 'a4'::text) AND 
(idb = (tt1.idb)::text) AND (idc = (tt1.idc)::text))
                                            Filter: (lvl = (SubPlan 4))
                                            Rows Removed by Filter: 6
                                            Heap Fetches: 18216
                                            Buffers: shared hit=599522 read=2873
                                            SubPlan 4
                                              ->  Aggregate  (cost=15.46..15.47 
rows=1 width=32) (actual time=0.172..0.173 rows=1 loops=18216)
                                                    Buffers: shared hit=575373 
read=1023
                                                    ->  Index Only Scan using 
pk_testtable2 on testtable2 tt2a  (cost=0.00..15.46 rows=1 width=32) (actual 
time=0.041..0.120
rows=28 loops=18216)
                                                          Index Cond: ((ida = 
(tt2.ida)::text) AND (idb = (tt2.idb)::text) AND (idc = (tt2.idc)::text) AND 
(lvl <=
400::numeric))
                                                          Heap Fetches: 514512
                                                          Buffers: shared 
hit=575373 read=1023
                                ->  Index Only Scan using pk_testtable4 on 
testtable4 tt4  (cost=0.00..8.39 rows=1 width=114) (actual time=0.024..0.026 
rows=1 loops=3036)
                                      Index Cond: ((ida = 'a4'::text) AND (idb 
= (tt2.idb)::text) AND (idc = (tt2.idc)::text))
                                      Heap Fetches: 3036
                                      Buffers: shared hit=9175
                    ->  Index Scan using pk_testtable3 on testtable3 tt3  
(cost=0.00..8.28 rows=1 width=76) (actual time=0.012..0.015 rows=1 loops=506)
                          Index Cond: (((ida)::text = 'a4'::text) AND 
((idd)::text = (ug.idd)::text))
                          Filter: (status = 'A'::bpchar)
                          Buffers: shared hit=1012
              ->  Index Only Scan using pk_testtable4 on testtable4 tt4  
(cost=0.00..7.92 rows=1 width=114) (actual time=0.029..0.031 rows=1 loops=506)
                    Index Cond: ((ida = 'a4'::text) AND (idb = (tt4.idb)::text) 
AND (idc = (tt4.idc)::text))
                    Heap Fetches: 506
                    Buffers: shared hit=1529
        ->  Index Scan using pk_testtable1 on testtable1 tt1  (cost=0.00..23.42 
rows=1 width=254) (actual time=0.171..0.520 rows=2 loops=506)
              Index Cond: (((ida)::text = 'a4'::text) AND ((idb)::text = 
(tt4.idb)::text) AND ((idc)::text = (tt4.idc)::text))
              Filter: (((idd)::text <> 'dddd8'::text) AND (upper((idc)::text) 
~~ 'CCC5%'::text) AND (lvl = (SubPlan 3)))
              Rows Removed by Filter: 34
              Buffers: shared hit=30132 read=879 written=184
              SubPlan 3
                ->  Result  (cost=11.70..11.71 rows=1 width=0) (actual 
time=0.055..0.056 rows=1 loops=2772)
                      Buffers: shared hit=11045 read=43 written=16
                      InitPlan 2 (returns $8)
                        ->  Limit  (cost=0.00..11.70 rows=1 width=32) (actual 
time=0.048..0.050 rows=1 loops=2772)
                              Buffers: shared hit=11045 read=43 written=16
                              ->  Index Only Scan Backward using pk_testtable1 
on testtable1 tt1a  (cost=0.00..11.70 rows=1 width=32) (actual 
time=0.044..0.044 rows=1
loops=2772)
                                    Index Cond: ((ida = (tt1.ida)::text) AND 
(idb = (tt1.idb)::text) AND (idc = (tt1.idc)::text) AND (idd = (tt1.idd)::text) 
AND (parname =
(tt1.parname)::text) AND (lvl IS NOT NULL) AND (lvl <= 400::numeric))
                                    Heap Fetches: 2772
                                    Buffers: shared hit=11045 read=43 written=16
  ->  Index Only Scan using pk_testtable2 on testtable2 tt2  (cost=0.00..30.93 
rows=1 width=146) (actual time=0.866..6.154 rows=6 loops=308)
        Index Cond: ((ida = 'a4'::text) AND (idb = (tt4.idb)::text) AND (idc = 
(tt4.idc)::text))
        Filter: (lvl = (SubPlan 1))
        Rows Removed by Filter: 30
        Heap Fetches: 11088
        Buffers: shared hit=363934 read=6
        SubPlan 1
          ->  Aggregate  (cost=15.46..15.47 rows=1 width=32) (actual 
time=0.162..0.163 rows=1 loops=11088)
                Buffers: shared hit=351792
                ->  Index Only Scan using pk_testtable2 on testtable2 tt2a  
(cost=0.00..15.46 rows=1 width=32) (actual time=0.042..0.114 rows=28 
loops=11088)
                      Index Cond: ((ida = (tt2.ida)::text) AND (idb = 
(tt2.idb)::text) AND (idc = (tt2.idc)::text) AND (lvl <= 400::numeric))
                      Heap Fetches: 313632
                      Buffers: shared hit=351792
Total runtime: 6493.514 ms

View with explicit casts:
pg 9.1.4:
Nested Loop  (cost=23621.06..28055.12 rows=1 width=35) (actual 
time=7032.914..9011.217 rows=1848 loops=1)
  Buffers: shared hit=1179403
  ->  Nested Loop  (cost=23621.06..28046.84 rows=1 width=41) (actual 
time=7032.880..8982.230 rows=1848 loops=1)
        Buffers: shared hit=1175707
        ->  Nested Loop  (cost=23621.06..28038.53 rows=1 width=64) (actual 
time=7032.821..8926.450 rows=1848 loops=1)
              Buffers: shared hit=1170115
              ->  Nested Loop  (cost=23615.64..23738.09 rows=1 width=50) 
(actual time=7031.803..7142.837 rows=308 loops=1)
                    Buffers: shared hit=806175
                    ->  HashAggregate  (cost=23610.87..23610.88 rows=1 
width=18) (actual time=7030.004..7031.396 rows=506 loops=1)
                          Buffers: shared hit=794807
                          ->  Nested Loop  (cost=18.93..23610.86 rows=1 
width=18) (actual time=6.765..7018.452 rows=3036 loops=1)
                                Buffers: shared hit=794807
                                ->  Nested Loop  (cost=18.93..19309.46 rows=1 
width=70) (actual time=6.033..3944.550 rows=506 loops=1)
                                      Buffers: shared hit=198476
                                      ->  Hash Join  (cost=18.93..1350.80 
rows=1250 width=90) (actual time=0.175..712.333 rows=312500 loops=1)
                                            Hash Cond: ((tt4.ida)::text = 
(ug.ida)::text)
                                            Buffers: shared hit=461
                                            ->  Seq Scan on testtable4 tt4  
(cost=0.00..1085.00 rows=62500 width=14) (actual time=0.033..89.502 rows=62500 
loops=1)
                                                  Buffers: shared hit=460
                                            ->  Hash  (cost=18.88..18.88 rows=4 
width=76) (actual time=0.110..0.110 rows=25 loops=1)
                                                  Buckets: 1024  Batches: 1  
Memory Usage: 2kB
                                                  Buffers: shared hit=1
                                                  ->  Seq Scan on testtable3 ug 
 (cost=0.00..18.88 rows=4 width=76) (actual time=0.016..0.061 rows=25 loops=1)
                                                        Filter: (status = 
'A'::bpchar)
                                                        Buffers: shared hit=1
                                      ->  Index Scan using pk_testtable1 on 
testtable1 tt1  (cost=0.00..14.35 rows=1 width=31) (actual time=0.007..0.007 
rows=0 loops=312500)
                                            Index Cond: (((ida)::text = 
'a4'::text) AND ((ida)::text = (tt4.ida)::text) AND ((idb)::text = 
(tt4.idb)::text) AND ((idc)::text
= (tt4.idc)::text) AND ((idd)::text = (ug.idd)::text) AND ((parname)::text = 
'PARNAME1'::text))
                                            Filter: ((val = 0::numeric) AND 
(lvl = (SubPlan 6)))
                                            Buffers: shared hit=198015
                                            SubPlan 6
                                              ->  Result  (cost=6.28..6.29 
rows=1 width=0) (actual time=0.054..0.055 rows=1 loops=1500)
                                                    Buffers: shared hit=6000
                                                    InitPlan 5 (returns $17)
                                                      ->  Limit  
(cost=0.00..6.28 rows=1 width=4) (actual time=0.046..0.048 rows=1 loops=1500)
                                                            Buffers: shared 
hit=6000
                                                            ->  Index Scan 
Backward using pk_testtable1 on testtable1 tt1a  (cost=0.00..12.57 rows=2 
width=4) (actual
time=0.042..0.042 rows=1 loops=1500)
                                                                  Index Cond: 
(((tt1.ida)::text = (ida)::text) AND ((tt1.idb)::text = (idb)::text) AND 
((tt1.idc)::text =
(idc)::text) AND ((tt1.idd)::text = (idd)::text) AND ((tt1.parname)::text = 
(parname)::text) AND (lvl IS NOT NULL) AND (lvl <= 400::numeric))
                                                                  Buffers: 
shared hit=6000
                                ->  Index Scan using pk_testtable2 on 
testtable2 tt2  (cost=0.00..4301.39 rows=1 width=18) (actual time=0.844..6.051 
rows=6 loops=506)
                                      Index Cond: (((ida)::text = 
(tt4.ida)::text) AND ((idb)::text = (tt4.idb)::text) AND ((idc)::text = 
(tt4.idc)::text))
                                      Filter: (lvl = (SubPlan 4))
                                      Buffers: shared hit=596331
                                      SubPlan 4
                                        ->  Aggregate  (cost=115.40..115.41 
rows=1 width=4) (actual time=0.159..0.161 rows=1 loops=18216)
                                              Buffers: shared hit=576396
                                              ->  Index Scan using 
pk_testtable2 on testtable2 tt2a  (cost=0.00..115.33 rows=28 width=4) (actual 
time=0.043..0.109 rows=28
loops=18216)
                                                    Index Cond: 
(((tt2.ida)::text = (ida)::text) AND ((tt2.idb)::text = (idb)::text) AND 
((tt2.idc)::text = (idc)::text) AND
(lvl <= 400::numeric))
                                                    Buffers: shared hit=576396
                    ->  Bitmap Heap Scan on testtable1 tt1  (cost=4.77..127.13 
rows=4 width=35) (actual time=0.111..0.211 rows=1 loops=506)
                          Recheck Cond: (((ida)::text = 'a4'::text) AND 
((idb)::text = (tt1.idb)::text) AND ((idc)::text = (tt1.idc)::text) AND 
((idd)::text = (tt1.idd)::text))
                          Filter: (((idd)::text <> 'dddd8'::text) AND 
(upper((idc)::text) ~~ 'CCC5%'::text) AND (lvl = (SubPlan 3)))
                          Buffers: shared hit=11368
                          ->  Bitmap Index Scan on pk_testtable1  
(cost=0.00..4.77 rows=12 width=0) (actual time=0.049..0.049 rows=12 loops=506)
                                Index Cond: (((ida)::text = 'a4'::text) AND 
((idb)::text = (tt1.idb)::text) AND ((idc)::text = (tt1.idc)::text) AND 
((idd)::text =
(tt1.idd)::text))
                                Buffers: shared hit=1600
                          SubPlan 3
                            ->  Result  (cost=6.28..6.29 rows=1 width=0) 
(actual time=0.053..0.054 rows=1 loops=924)
                                  Buffers: shared hit=3696
                                  InitPlan 2 (returns $8)
                                    ->  Limit  (cost=0.00..6.28 rows=1 width=4) 
(actual time=0.047..0.048 rows=1 loops=924)
                                          Buffers: shared hit=3696
                                          ->  Index Scan Backward using 
pk_testtable1 on testtable1 tt1a  (cost=0.00..12.57 rows=2 width=4) (actual 
time=0.042..0.042 rows=1
loops=924)
                                                Index Cond: (((tt1.ida)::text = 
(ida)::text) AND ((tt1.idb)::text = (idb)::text) AND ((tt1.idc)::text = 
(idc)::text) AND
((tt1.idd)::text = (idd)::text) AND ((tt1.parname)::text = (parname)::text) AND 
(lvl IS NOT NULL) AND (lvl <= 400::numeric))
                                                Buffers: shared hit=3696
              ->  Bitmap Heap Scan on testtable2 tt2  (cost=5.42..4299.91 
rows=36 width=18) (actual time=0.524..5.765 rows=6 loops=308)
                    Recheck Cond: (((ida)::text = 'a4'::text) AND ((idb)::text 
= (tt1.idb)::text) AND ((idc)::text = (tt1.idc)::text))
                    Filter: (lvl = (SubPlan 1))
                    Buffers: shared hit=363940
                    ->  Bitmap Index Scan on pk_testtable2  (cost=0.00..5.42 
rows=36 width=0) (actual time=0.050..0.050 rows=36 loops=308)
                          Index Cond: (((ida)::text = 'a4'::text) AND 
((idb)::text = (tt1.idb)::text) AND ((idc)::text = (tt1.idc)::text))
                          Buffers: shared hit=1060
                    SubPlan 1
                      ->  Aggregate  (cost=115.40..115.41 rows=1 width=4) 
(actual time=0.151..0.152 rows=1 loops=11088)
                            Buffers: shared hit=351792
                            ->  Index Scan using pk_testtable2 on testtable2 
tt2a  (cost=0.00..115.33 rows=28 width=4) (actual time=0.040..0.103 rows=28 
loops=11088)
                                  Index Cond: (((tt2.ida)::text = (ida)::text) 
AND ((tt2.idb)::text = (idb)::text) AND ((tt2.idc)::text = (idc)::text) AND 
(lvl <=
400::numeric))
                                  Buffers: shared hit=351792
        ->  Index Scan using pk_testtable4 on testtable4 tt4  (cost=0.00..8.29 
rows=1 width=14) (actual time=0.022..0.024 rows=1 loops=1848)
              Index Cond: (((ida)::text = 'a4'::text) AND ((idb)::text = 
(tt2.idb)::text) AND ((idc)::text = (tt2.idc)::text))
              Buffers: shared hit=5592
  ->  Index Scan using pk_testtable3 on testtable3 tt3  (cost=0.00..8.28 rows=1 
width=76) (actual time=0.008..0.010 rows=1 loops=1848)
        Index Cond: (((ida)::text = 'a4'::text) AND ((idd)::text = 
(tt1.idd)::text))
        Filter: (status = 'A'::bpchar)
        Buffers: shared hit=3696
Total runtime: 9014.607 ms

Pg 9.2.1:
Nested Loop  (cost=316789.12..321569.63 rows=1 width=35) (actual 
time=7167.881..19837.510 rows=1848 loops=1)
  Buffers: shared hit=3701042 read=773
  ->  Nested Loop  (cost=316789.12..321567.91 rows=1 width=58) (actual 
time=7166.177..19779.950 rows=1848 loops=1)
        Buffers: shared hit=3695450 read=773
        ->  Nested Loop  (cost=316789.12..321453.32 rows=1 width=108) (actual 
time=7094.176..19278.978 rows=3036 loops=1)
              Join Filter: ((tt1.idd)::text = (tt3.idd)::text)
              Rows Removed by Join Filter: 12144
              Buffers: shared hit=3627242 read=773
              ->  Index Scan using pk_testtable3 on testtable3 tt3  
(cost=0.00..20.33 rows=1 width=76) (actual time=0.070..0.113 rows=5 loops=1)
                    Index Cond: ((ida)::text = 'a4'::text)
                    Filter: (status = 'A'::bpchar)
                    Rows Removed by Filter: 5
                    Buffers: shared hit=3
              ->  Nested Loop  (cost=316789.12..321432.97 rows=1 width=32) 
(actual time=808.496..3849.543 rows=3036 loops=5)
                    Buffers: shared hit=3627239 read=773
                    ->  HashAggregate  (cost=316789.12..316789.13 rows=1 
width=18) (actual time=807.586..808.861 rows=506 loops=5)
                          Buffers: shared hit=645584 read=773
                          ->  Nested Loop  (cost=1734.49..316789.11 rows=1 
width=18) (actual time=157.418..4029.344 rows=3036 loops=1)
                                Buffers: shared hit=645584 read=773
                                ->  Nested Loop  (cost=1734.49..312398.36 
rows=1 width=70) (actual time=156.262..863.669 rows=506 loops=1)
                                      Buffers: shared hit=49388 read=637
                                      ->  Nested Loop  (cost=1734.49..312391.02 
rows=1 width=56) (actual time=149.813..794.397 rows=2511 loops=1)
                                            Buffers: shared hit=43841 read=637
                                            ->  Index Scan using pk_testtable3 
on testtable3 ug  (cost=0.00..60.68 rows=4 width=76) (actual time=0.015..0.121 
rows=25 loops=1)
                                                  Filter: (status = 'A'::bpchar)
                                                  Rows Removed by Filter: 25
                                                  Buffers: shared hit=2
                                            ->  Bitmap Heap Scan on testtable1 
tt1  (cost=1734.49..78082.51 rows=8 width=31) (actual time=13.123..31.474 
rows=100 loops=25)
                                                  Recheck Cond: (((ida)::text = 
(ug.ida)::text) AND ((ida)::text = 'a4'::text) AND ((parname)::text = 
'PARNAME1'::text))
                                                  Filter: ((val = 0::numeric) 
AND ((ug.idd)::text = (idd)::text) AND (lvl = (SubPlan 6)))
                                                  Rows Removed by Filter: 8900
                                                  Buffers: shared hit=43839 
read=637
                                                  ->  Bitmap Index Scan on 
pk_testtable1  (cost=0.00..1734.49 rows=9120 width=0) (actual time=9.209..9.209 
rows=9000 loops=25)
                                                        Index Cond: 
(((ida)::text = (ug.ida)::text) AND ((ida)::text = 'a4'::text) AND 
((parname)::text = 'PARNAME1'::text))
                                                        Buffers: shared 
hit=8475 read=1
                                                  SubPlan 6
                                                    ->  Result  
(cost=7.82..7.83 rows=1 width=0) (actual time=0.053..0.054 rows=1 loops=7500)
                                                          Buffers: shared 
hit=30000
                                                          InitPlan 5 (returns 
$17)
                                                            ->  Limit  
(cost=0.00..7.82 rows=1 width=4) (actual time=0.046..0.048 rows=1 loops=7500)
                                                                  Buffers: 
shared hit=30000
                                                                  ->  Index 
Only Scan Backward using pk_testtable1 on testtable1 tt1a  (cost=0.00..15.65 
rows=2 width=4)
(actual time=0.042..0.042 rows=1 loops=7500)
                                                                        Index 
Cond: ((ida = (tt1.ida)::text) AND (idb = (tt1.idb)::text) AND (idc = 
(tt1.idc)::text) AND
(idd = (tt1.idd)::text) AND (parname = (tt1.parname)::text) AND (lvl IS NOT 
NULL) AND (lvl <= 400::numeric))
                                                                        Heap 
Fetches: 7500
                                                                        
Buffers: shared hit=30000
                                      ->  Index Only Scan using pk_testtable4 
on testtable4 tt4  (cost=0.00..7.34 rows=1 width=14) (actual time=0.023..0.023 
rows=0 loops=2511)
                                            Index Cond: ((ida = 
(tt1.ida)::text) AND (idb = (tt1.idb)::text) AND (idc = (tt1.idc)::text))
                                            Heap Fetches: 506
                                            Buffers: shared hit=5547
                                ->  Index Only Scan using pk_testtable2 on 
testtable2 tt2  (cost=0.00..4390.73 rows=1 width=18) (actual time=0.891..6.234 
rows=6 loops=506)
                                      Index Cond: ((ida = (tt4.ida)::text) AND 
(idb = (tt4.idb)::text) AND (idc = (tt4.idc)::text))
                                      Filter: (lvl = (SubPlan 4))
                                      Rows Removed by Filter: 30
                                      Heap Fetches: 18216
                                      Buffers: shared hit=596196 read=136
                                      SubPlan 4
                                        ->  Aggregate  (cost=121.65..121.66 
rows=1 width=4) (actual time=0.164..0.165 rows=1 loops=18216)
                                              Buffers: shared hit=576395 read=1
                                              ->  Index Only Scan using 
pk_testtable2 on testtable2 tt2a  (cost=0.00..121.58 rows=28 width=4) (actual 
time=0.041..0.114
rows=28 loops=18216)
                                                    Index Cond: ((ida = 
(tt2.ida)::text) AND (idb = (tt2.idb)::text) AND (idc = (tt2.idc)::text) AND 
(lvl <= 400::numeric))
                                                    Heap Fetches: 514512
                                                    Buffers: shared hit=576395 
read=1
                    ->  Index Only Scan using pk_testtable2 on testtable2 tt2  
(cost=0.00..4643.83 rows=1 width=18) (actual time=0.854..5.988 rows=6 
loops=2530)
                          Index Cond: ((ida = 'a4'::text) AND (idb = 
(tt1.idb)::text) AND (idc = (tt1.idc)::text))
                          Filter: (lvl = (SubPlan 1))
                          Rows Removed by Filter: 30
                          Heap Fetches: 91080
                          Buffers: shared hit=2981655
                          SubPlan 1
                            ->  Aggregate  (cost=121.65..121.66 rows=1 width=4) 
(actual time=0.158..0.159 rows=1 loops=91080)
                                  Buffers: shared hit=2881980
                                  ->  Index Only Scan using pk_testtable2 on 
testtable2 tt2a  (cost=0.00..121.58 rows=28 width=4) (actual time=0.040..0.111 
rows=28 loops=91080)
                                        Index Cond: ((ida = (tt2.ida)::text) 
AND (idb = (tt2.idb)::text) AND (idc = (tt2.idc)::text) AND (lvl <= 
400::numeric))
                                        Heap Fetches: 2572560
                                        Buffers: shared hit=2881980
        ->  Index Scan using pk_testtable1 on testtable1 tt1  
(cost=0.00..114.58 rows=1 width=35) (actual time=0.074..0.160 rows=1 loops=3036)
              Index Cond: (((ida)::text = 'a4'::text) AND ((idb)::text = 
(tt2.idb)::text) AND ((idc)::text = (tt2.idc)::text) AND ((idd)::text = 
(tt3.idd)::text))
              Filter: (((idd)::text <> 'dddd8'::text) AND (upper((idc)::text) 
~~ 'CCC5%'::text) AND (lvl = (SubPlan 3)))
              Rows Removed by Filter: 11
              Buffers: shared hit=68208
              SubPlan 3
                ->  Result  (cost=7.82..7.83 rows=1 width=0) (actual 
time=0.049..0.050 rows=1 loops=5544)
                      Buffers: shared hit=22176
                      InitPlan 2 (returns $8)
                        ->  Limit  (cost=0.00..7.82 rows=1 width=4) (actual 
time=0.043..0.044 rows=1 loops=5544)
                              Buffers: shared hit=22176
                              ->  Index Only Scan Backward using pk_testtable1 
on testtable1 tt1a  (cost=0.00..15.65 rows=2 width=4) (actual time=0.039..0.039 
rows=1
loops=5544)
                                    Index Cond: ((ida = (tt1.ida)::text) AND 
(idb = (tt1.idb)::text) AND (idc = (tt1.idc)::text) AND (idd = (tt1.idd)::text) 
AND (parname =
(tt1.parname)::text) AND (lvl IS NOT NULL) AND (lvl <= 400::numeric))
                                    Heap Fetches: 5544
                                    Buffers: shared hit=22176
  ->  Index Only Scan using pk_testtable4 on testtable4 tt4  (cost=0.00..1.71 
rows=1 width=14) (actual time=0.022..0.024 rows=1 loops=1848)
        Index Cond: ((ida = 'a4'::text) AND (idb = (tt2.idb)::text) AND (idc = 
(tt2.idc)::text))
        Heap Fetches: 1848
        Buffers: shared hit=5592
Total runtime: 19840.747 ms



-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to