Re: Using index from sub-query
От | Mike Mascari |
---|---|
Тема | Re: Using index from sub-query |
Дата | |
Msg-id | 200008281548.LAA21340@corvette.mascari.com обсуждение исходный текст |
Ответ на | Using index from sub-query (pdaly <petedaly@ix.netcom.com>) |
Список | pgsql-general |
> From: pdaly <petedaly@ix.netcom.com> > As has been talked about recently, I have a int8 field, which when searched for > as 'value' will use the index, but as value, with the quotes will not. > > I subquery to get a list of the values to look up: > > SELECT [fields] > FROM table1 > WHERE id in ( > select distinct id from namelookup where name = '$tname' > ) > > When I do an explain on this, it is doing a table scan, and not using the index > table1. It will only use the index when the value to be matched is in quotes. > How can I force it to use the index, or create a new index which would be used. > > This causes a HUGE performance hit. (30-45 seconds, as opposed to less than 1 > second.) Unfortunately, PostgreSQL doesn't use indexes with IN clauses. Its on the list of things TODO though. At the moment, you have to write the query using EXISTS instead: SELECT table1.[fields] FROM table1 WHERE EXISTS (SELECT namelookup.id FROM namelookup WHERE namelookup.id = table1.id AND name = '$tname'); Hope that helps, Mike Mascari
В списке pgsql-general по дате отправления: