How to optimize this query ?
От | proghome@silesky.com (krystoffff) |
---|---|
Тема | How to optimize this query ? |
Дата | |
Msg-id | 85898f7e.0308121021.4c66aae5@posting.google.com обсуждение исходный текст |
Ответы |
Re: How to optimize this query ?
Re: How to optimize this query ? |
Список | pgsql-sql |
Hi all I have to optmize this query, because it takes a while to run (about 30s) Here are the tables (with the keys):affiliate_lockout (6 rows) (member_id, affiliate_id)lead (4490 rows) (id,...)member (6 rows) (id, ...)member_exclusion (3 rows) (member_id, member_id_to_exclude)purchase (10000rows) (lead_id, member_id, ...) Here is the query: SELECT * FROM lead WHERE (exclusive IS NULL OR (exclusive = 0 AND nb_purchases < 3)) AND id NOT IN ( SELECT lead_id FROM purchase WHERE member_id = 21101 ) AND affiliate_id NOT IN ( SELECT affiliate_locked_id FROM affiliate_lockout WHERE member_id = 21101 ) AND id NOT IN ( SELECT lead_id FROM purchase INNER JOIN member_exclusion WHERE purchase.member_id = member_exclusion.member_id_to_exclude AND purchase.member_id = 21101 ) I wonder the problem is with the subqueries (which are apparently very slow to run, according to what I read), but I can't figure how to rewrite this query without any subquery ... Maybe the problem comes from the index ... How would you create your indexes to optimize this query ? Could somebody help me ? Thanks krystoffff
В списке pgsql-sql по дате отправления: