Re: [HACKERS] subselect and optimizer
От | t-ishii@sra.co.jp |
---|---|
Тема | Re: [HACKERS] subselect and optimizer |
Дата | |
Msg-id | 199804150835.RAA03085@srapc451.sra.co.jp обсуждение исходный текст |
Ответ на | Re: [HACKERS] subselect and optimizer ("Boersenspielteam" <boersenspiel@vocalweb.de>) |
Список | pgsql-hackers |
>then I think this one is solved. > >I'll try to reproduce it on my machine, if I get the same results, I >will be a quiet and happy Postgres user again ;-) > >I don't have the message, that originated this thread, but is the >slow subselect from Tatsuo fixed? > >Tatsua, can you test queries with the abckend options suggested by >Vadim? I have tested with 6.3.2 beta. (Sorry test data is not same as my original posting) Here are results: "postal" table holds ~110k records. "prefecture" table has 47 records. query is as follows: select * from prefecture,postal where prefecture.pid = postal.pid and postal.town in (select town from postal where newcode = '1040061'); All of columns that appear above have btree index. No options to backend produced a nested loop plan. Nested Loop (cost=98.90 size=11888 width=92) -> Seq Scan on prefecture (cost=2.55 size=47 width=26) -> Index Scan on postal (cost=2.05 size=11888 width=66) SubPlan -> Index Scan on postal (cost=2.05 size=2 width=12) > 26.78 real 22.35 user 0.58 sys Next I gave -fn to the backend. Hash Join (cost=6246.48 size=11888 width=92) -> Seq Scan on postal (cost=5842.97 size=11888 width=66) SubPlan -> Index Scan on postal (cost=2.05 size=2 width=12) -> Hash (cost=0.00 size=0 width=0) -> Seq Scan on prefecture (cost=2.55 size=47 width=26) > 24.97 real 21.30 user 0.50 sys Finally I tried merge join. Merge Join (cost=8580.86 size=11888 width=92) -> Seq Scan (cost=2.55 size=0 width=0) -> Sort (cost=2.55 size=0 width=0) -> Seq Scan on prefecture (cost=2.55 size=47 width=26) -> Index Scan on postal (cost=8181.90 size=11888 width=66) SubPlan -> Index Scan on postal (cost=2.05 size=2 width=12) >> In current I see that >> >> Hash Join (cost=5905.62 size=3343409 width=8) >> -> Seq Scan on trans (cost=3154.70 size=71112 width=4) >> -> Hash (cost=0.00 size=0 width=0) >> -> Seq Scan on kurse (cost=238.61 size=4958 width=4) > 25.63 real 22.13 user 0.51 sys So in my case Merge Join was the fastest, Hash Join and Nested Loop (PostgreSQL decides this was the best) were almost same. I tried for several times and the tendency seemed not changed. Anyway the differences were not so big. -- Tatsuo Ishii t-ishii@sra.co.jp
В списке pgsql-hackers по дате отправления: