Nested Views take forever

From: "Zot O'Connor" <zot(at)zotconsulting(dot)com>
To: postgres sql <pgsql-sql(at)hub(dot)org>
Subject: Nested Views take forever
Date: 1999-11-11 23:10:09
Message-ID: 382B4CD1.E7EB3C79@zotconsulting.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

I have a table subcat with can link to itself. scatscat can point to 0,
or aan id (scatval).

I wanted to be to get to the various depths, so I used views:

CREATE VIEW depth1 AS SELECT scatval AS d1_scatval ,scatscat AS
d1_scatscat, scatdescr AS D1_scatdescr from subcat where scatscat = 0;
CREATE VIEW depth2 AS SELECT scatval AS d2_scatval ,scatscat AS
d2_scatscat, scatdescr AS D2_scatdescr from subcat where scatscat in
(SELECT d1_scatval FROM depth1);
CREATE VIEW depth3 AS SELECT scatval AS d3_scatval ,scatscat AS
d3_scatscat, scatdescr AS D3_scatdescr from subcat where scatscat in
(SELECT d2_scatval FROM depth2);

"select * from depth2" works fine, but select * from depth3 takes a long
time.

There are 233 subcats, 20 in depth1, 37, in depth2, and 179 in depth3.

when I dselect from depth, it is fast, depth2 is a bit slower, but depth
3 can be 45 seconds or more.

It seems obvious that it is recreating the VIEWs each time, even though
nothing has changed.

Is there anyway to make the views more persistent or should I just make
tables again?

consup=> EXPLAIN SELECT COUNT(*) from depth3;
NOTICE: QUERY PLAN:

Aggregate (cost=11.69 rows=233 width=4)
-> Seq Scan on subcat (cost=11.69 rows=233 width=4)
SubPlan
-> Seq Scan on subcat (cost=11.69 rows=233 width=4)
SubPlan
-> Seq Scan on subcat (cost=11.69 rows=6 width=4)

I have an index on the values:
create index scat_ndx on subcat (scatval);
create index scatc_ndx on subcat (scatcat);

The subcat table:

create table subcat (
scatval integer DEFAULT NEXTVAL ('scat_seq'),
scatcat integer NOT NULL,
scatscat integer NOT NULL,
scatzid integer,
scatlid integer,
scatlogo varchar,
scatlogoh integer,
scatlogow integer,
scatdescr varchar,
scatback varchar,
scatbg varchar,
scatlink varchar,
scatvlink varchar,
scatalink varchar,
scatbanr varchar,
scatbanrh integer,
scatbanrw integer,
scatsku varchar,
scattext varchar,
scatmast varchar(8103),
scattmpl varchar,
scatsort varchar,
scatfree varchar
);

Am I wrong to use VIEWs here?

--
Zot O'Connor

www.ZotConsulting.com
www.WhiteKnightHackers.com

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 1999-11-12 00:34:06 Re: [SQL] Nested Views take forever
Previous Message Mark Stosberg 1999-11-11 19:54:05 Does postgres have something like MySQL's DESCRIBE?