Re: [repost] partial index / funxtional idx or bad sql?
От | csajl |
---|---|
Тема | Re: [repost] partial index / funxtional idx or bad sql? |
Дата | |
Msg-id | 20030513004710.58428.qmail@web40312.mail.yahoo.com обсуждение исходный текст |
Ответ на | Re: [repost] partial index / funxtional idx or bad sql? (Josh Berkus <josh@agliodbs.com>) |
Ответы |
Re: [repost] partial index / funxtional idx or bad sql?
Re: [repost] partial index / funxtional idx or bad sql? |
Список | pgsql-performance |
hi josh. i'm using 7.3.2. i tried using EXISTS instead of the IN, but the same query now returns in seven sceonds as opposed to four with the IN. cmdb=# EXPLAIN ANALYZE cmdb-# select c.class_id, c.areacode, c.title from classifieds c cmdb-# where c.class_cat_id = '1' cmdb-# and c.areacode IN ( cmdb(# select areacode from cm_areacode where site_id = '10') cmdb-# ; QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------------------- Index Scan using classifieds_dual_idx on classifieds c (cost=0.00..26622.14 rows=1837 width=39) (actual time=345.48..2305.04 rows=8460 loops=1) Index Cond: (class_cat_id = 1) Filter: (subplan) SubPlan -> Materialize (cost=3.46..3.46 rows=4 width=2) (actual time=0.00..0.01 rows=5 loops=61966) -> Index Scan using site_cm_areacode_idx on cm_areacode (cost=0.00..3.46 rows=4 width=2) (actual time=0.14..0.22 rows=5 loops=1) Index Cond: (site_id = 10) Total runtime: 2314.14 msec (8 rows) ---------------------------------- classifieds_dual_idx is the btree index on (class_type_id, areacode) and site_cm_areacode_idx is the btree index on (site_id) only. there is an index in the areacode table that has both (site_id, areacode) but it's apparently not being used. would it help the query to use that index instead? thanks for your help. --- Josh Berkus <josh@agliodbs.com> wrote: > Seth, > > > SELECT p.id, p.areacode, p.content > > FROM posts p > > WHERE p.type_id = ? > > AND p.areacode in ( > > select areacode from areacodes > > where site_id = ? > > ) > > Unless you're using 7.4 from CVS, you want to get rid of that IN: > > SELECT p.id, p.areacode, p.content > FROM posts p > WHERE p.type_id = ? > AND EXISTS ( > select areacode from areacodes > where site_id = ? > and p.areacode = areacodes.areacode > ); > > See how that works, and if it's still slow, post the EXPLAIN ANALYZE. __________________________________ Do you Yahoo!? The New Yahoo! Search - Faster. Easier. Bingo. http://search.yahoo.com
В списке pgsql-performance по дате отправления: