[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pgsql-bugs
Subject:    Re: [BUGS] BUG #14302: SQL with LIMIT degrades performance seriously
From:       Andrew Gierth <andrew () tao11 ! riddles ! org ! uk>
Date:       2016-08-31 17:41:06
Message-ID: 87inug4zvx.fsf () news-spur ! riddles ! org ! uk
[Download RAW message or body]

>>>>> "Kaijiang" == Kaijiang Chen <chenkaijiang@gmail.com> writes:

 Kaijiang> It couldn't solve the problem.
 Kaijiang> I've already created 2 btree indexes, one for parent_id, the
 Kaijiang> other for user_id.  Do you mean to create an multi-column
 Kaijiang> index on (parent_id, user_id)?

Yes. The 2 separate indexes are not sufficient, but you can omit the
index on parent_id alone if you create the multi-column index.

 Kaijiang> still couldn't solve the problem, since we still need index
 Kaijiang> for user_id (for other sql) and planner will turn to user_id
 Kaijiang> index.

The planner should not do that (if it does, it's a bug).

The plan you're looking for is:

Limit
-> MergeAppend
   -> Index scan on parent_id_user_id_idx
        Index Cond: (parent_id = ?)
   -> Index scan on parent_id_user_id_idx
        Index Cond: (parent_id = ?)
   ...

Note the use of Index Cond rather than Filter, this is important.

-- 
Andrew (irc:RhodiumToad)


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

Configure | About | News | Add a list | Sponsored by KoreLogic