Re: Hash Join not using hashed index?
| От | Tom Lane |
|---|---|
| Тема | Re: Hash Join not using hashed index? |
| Дата | |
| Msg-id | 15408.962204177@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | Hash Join not using hashed index? (Ang Chin Han <angch@pintoo.com>) |
| Ответы |
Re: Hash Join not using hashed index?
|
| Список | pgsql-sql |
Ang Chin Han <angch@pollcities.com> writes:
>> The planner could choose to use an indexscan on a hash index
>> as an input for the join, but it'd only be likely to do so
>> if there is a restriction clause matching the index. In your
>> example you have only a join WHERE clause.
> Well, in my original query, there was, but the plan's the same.
> Probably the clause wasn't restrictive enough (" and region < n").
If it was like that then a hash index wouldn't have been applicable
anyway; hashes are only good for strict equality checks. If you want
something that can do ordering checks you need a btree index.
(There are good reasons why btree is the default index type ;-))
> Original cost est:
> Hash Join (cost=8.85..16.76 rows=75 width=18)
> -> Seq Scan on city (cost=0.00..1.75 rows=75 width=16)
> -> Hash (cost=5.53..5.53 rows=253 width=2)
> -> Seq Scan on country (cost=0.00..5.53 rows=253 width=2)
> I guess the problem is that country-city is a one-to-many relation,
> BUT I've more countries than cities (note the # of rows above), thus
> throwing the planner off...
Off what? This looks like a pretty reasonable plan to me, given the
fairly small table sizes. Do you have evidence that another plan
type would be quicker for this problem?
regards, tom lane
В списке pgsql-sql по дате отправления: