Re: Slow running query with views...how to increase efficiency? with index? - Mailing list pgsql-general

From fox7
Subject Re: Slow running query with views...how to increase efficiency? with index?
Date
Msg-id 26091310.post@talk.nabble.com
Whole thread Raw
In response to Re: Slow running query with views...how to increase efficiency? with index?  (Merlin Moncure <mmoncure@gmail.com>)
Responses Re: Slow running query with views...how to increase efficiency? with index?
List pgsql-general
Views do not help or hurt performance.  Views encapsulate complex queries.

If you have a slow running query, the usual way to get help is to post:
*) explain analyze results (most important)
*) the query (important)
*) interesting tables/indexes (somewhat important)
----------------------

These are 2 queries for example...
The first runs with 55ms, the 2nd with views is executed in 4500ms...
:confused:

SELECT DISTINCT table_0.term1, table_1.term2 FROM TC table_0 , TO table_1
WHERE table_1.term1='c'  AND table_0.term2=table_1.term2
 UNION
SELECT DISTINCT table_0.term1, table_1.term1 FROM TC table_0 , TB table_1
WHERE table_0.term2=table_1.term1  AND table_1.term2='c'

----------------------------------------------------------

SELECT DISTINCT V2TC.term1 AS term1,V2TO.term2 AS term2
FROM V2TO,V2TC
WHERE V2TO.term2=V2TC.term2 AND V2TO.term1='c'


---------Definition of tables and views involved-------------

-- Table: TC
CREATE TABLE TC(
  term1 character varying(100),
  term2 character varying(100)
  )
WITH (OIDS=FALSE);
ALTER TABLE TC OWNER TO postgres;

-- Index: TC_index1
CREATE INDEX TC_index1
  ON TC
  USING btree
  (term1);

-- Index: TC_index2
CREATE INDEX TC_index2
  ON TC
  USING btree
  (term2);

--TO and TB are more or less equal to TC

-- View: v2TC
CREATE OR REPLACE VIEW v2TC AS
 SELECT DISTINCT TC.term1, TC.term2
   FROM TC
  ORDER BY TC.term1, TC.term2;

ALTER TABLE v2TC OWNER TO postgres;

-- View: v2TO
CREATE OR REPLACE VIEW v2TO AS ( SELECT DISTINCT TO.term1, TO.term2
   FROM TO
  ORDER BY TO.term1, TO.term2)
UNION
 SELECT TB.term2 AS term1, TB.term1 AS term2
   FROM TB;

ALTER TABLE v2TO OWNER TO postgres;


--
View this message in context:
http://www.nabble.com/Slow-running-query-with-views...how-to-increase-efficiency--with-index--tp26086104p26091310.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.


pgsql-general by date:

Previous
From: Martin Gainty
Date:
Subject: Re: PHP + PDO + PGPOOL = Segmentation fault
Next
From: Ivan Sergio Borgonovo
Date:
Subject: still on joining array/inline values was and is: design, ref integrity and performance