| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Dima Tkach <dmitry(at)openratings(dot)com> |
| Cc: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: Index not used with IS NULL |
| Date: | 2003-02-17 05:42:19 |
| Message-ID: | 2071.1045460539@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
Dima Tkach <dmitry(at)openratings(dot)com> writes:
> For example, how would I get the list of the "top-level" (no parent)
> nodes given your suggestion?
> select * from trees where parent=id
Exactly.
> is hardly a good idea, because it just has to be a seq. scan, right?
Make a partial index if you need it to be fast.
regression=# create table trees (id int, parent int);
CREATE TABLE
regression=# explain select * from trees where parent=id;
QUERY PLAN
------------------------------------------------------
Seq Scan on trees (cost=0.00..22.50 rows=5 width=8)
Filter: (parent = id)
(2 rows)
regression=# create index foo on trees(id) where parent=id;
CREATE INDEX
regression=# explain select * from trees where parent=id;
QUERY PLAN
------------------------------------------------------------------
Index Scan using foo on trees (cost=0.00..17.07 rows=5 width=8)
Filter: (parent = id)
(2 rows)
> I may be missing something of course, but so far, this looks to me like
> a very useful feature, that would be very easy to implement too...
Criticism in the form of patches is more useful than unsubstantiated
opinions that something is easy.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Stephan Szabo | 2003-02-17 05:46:49 | Re: Index not used with IS NULL |
| Previous Message | Tom Lane | 2003-02-17 04:46:00 | Re: Index not used with IS NULL |