Nested Views take forever - Mailing list pgsql-sql

From Zot O'Connor
Subject Nested Views take forever
Date
Msg-id 382B4CD1.E7EB3C79@zotconsulting.com
Whole thread Raw
Responses Re: [SQL] Nested Views take forever  (Tom Lane <tgl@sss.pgh.pa.us>)
List 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.69rows=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


pgsql-sql by date:

Previous
From: Mark Stosberg
Date:
Subject: Does postgres have something like MySQL's DESCRIBE?
Next
From: Tom Lane
Date:
Subject: Re: [SQL] Nested Views take forever