2016-03-16 21:23 GMT+01:00 Doiron, Daniel <doir...@advisory.com>:

> I have the following queries:
>
> EXPLAIN (ANALYZE, VERBOSE, COSTS, BUFFERS, TIMING)
> select    […]
>                 from      f_calc_service   a11,
>                                 d_patient_type                a12
>                 where   a11.d_patient_pop_id in (336)
>                          and a11.d_patient_type_id = a12.id
>                          and a12.short_name = 'I'
>                 group by              a11.d_rate_schedule_id,
>                                 a11.d_payer_id,
>                                 a11.d_patient_pop_id,
>                                 a11.d_patient_type_id
> ;
>
> And
>
> EXPLAIN (ANALYZE, VERBOSE, COSTS, BUFFERS, TIMING)
> select     […]
>                 from      f_calc_service   a11,
>                                 d_patient_type                a12
>                 where   a11.d_patient_pop_id in (336)
>                          and a11.d_patient_type_id = a12.id
>                          and a12.short_name = 'O'
>                 group by              a11.d_rate_schedule_id,
>                                 a11.d_payer_id,
>                                 a11.d_patient_pop_id,
>                                 a11.d_patient_type_id
> ;
>
> Making this one change from short_name = ‘I’ to short_name = ‘O’ changes
> the query execution from 200k ms to 280ms. The first one chooses a Nested
> Loop, the second chooses a hash join. How do I get them both to choose the
> same? There are no values for d_patient_pop_id in (336) and short_name =
> ‘I’.
>

we don't see plans, so it is blind shot,

Probably the estimation for 'I' value is pretty underestimated - so planner
choose nested loop. The reasons can be different - possible correlation
inside data for example.

You can try:

0) ensure so your statistic are current - run statement ANALYZE

a) increase statistic by statement ALTER TABLE xx ALTER COLUMN yyy SET
STATISTICS some number

b) penalize nested loop - statement SET enable_nestloop TO off;

Regards

Pavel


>
> Thanks!
>
> Dan
>
>
>

Reply via email to