Thread: ...

...

From
Илья Конюхов
Date:
> For example, consider the queres:
> 
> SELECT * FROM table1 WHERE field1=1 AND field2=1;
> 
> SELECT * FROM table1 WHERE field2=1 AND field1=1;
> 
> 
> These two queries are logically equivalent. But in all cases the planner generates a query plan that performs
field1=1condition, and then field2=1 condition, as there is a index on field1.
 
> 
> Is it possible to instruct the PostgreSQL query planner to perform field2=1 condition first, and then field1=1
condition?
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend
> 

EXPLAIN [ ANALYZE ] [ VERBOSE ] statement
This command displays the execution plan that the PostgreSQL planner generates for the supplied statement.

This command displays plan ONLY! But I want to instruct the PostgreSQL query planner to perform field2=1 condition
first,and then field1=1 condition.
 


Re:

From
Silke Trissl
Date:
Илья Конюхов wrote:
>>For example, consider the queres:
>>
>>SELECT * FROM table1 WHERE field1=1 AND field2=1;
>>
>>SELECT * FROM table1 WHERE field2=1 AND field1=1;
>>
>>
>>These two queries are logically equivalent. But in all cases the planner generates a query plan that performs
field1=1condition, and then field2=1 condition, as there is a index on field1. 
>>
>>Is it possible to instruct the PostgreSQL query planner to perform field2=1 condition first, and then field1=1
condition?
>>
You might get the desired result, if you switch off the index scan:

set ENABLE_INDEXSCAN = OFF.

But there is no way to tell Postgres what to use first. Usually the
query planer is quite good, so there is no reason to fiddle around. And
why on earth would you like that. In the end you get the same result.

Hope, that helps
Silke