Re: Query plan - now what? - Mailing list pgsql-performance

From David Shadovitz
Subject Re: Query plan - now what?
Date
Msg-id 01C3C1CF.EC044640.david@shadovitz.com
Whole thread Raw
In response to Query plan - now what?  (David Shadovitz <david@shadovitz.com>)
List pgsql-performance
Here are my query and schema.  The ERD is at http://dshadovi.f2o.org/pg_erd.jpg
(sorry about its resolution).
-David

SELECT
   zbr.zebra_name
 , dog.dog_name
 , mnk.monkey_name
 , wrm.abbreviation || ptr.abbreviation as abbrev2
 , whg.warthog_num
 , whg.color
 , rhn.rhino_name
 , der.deer_name
 , lin.designator
 , frg.frog_id
 , frg.sound_id
 , tgr.tiger_name
 , frg.leg_length
 , frg.jump_distance
FROM
   frogs frg
 , deers der
 , warthogs whg
 , rhinos rhn
 , zebras zbr
 , dogs dog
 , monkeys mnk
 , worms wrm
 , parrots prt
 , giraffes grf
 , lions lin
 , tigers tgr
WHERE 1 = 1
AND frg.deer_id = der.deer_id
AND whg.whg_id = frg.frg_id
AND frg.rhino_id = rhn.rhino_id
AND zbr.zebra_id = dog.zebra_id
AND dog.dog_id = mky.dog_id
AND mky.dog_id = whg.dog_id
AND mky.monkey_num = whg.monkey_num
AND whg.worm_id = wrm.worm_id
AND whg.parrot_id = prt.parrot_id
AND prt.beak = 'L'
AND frg.frog_id = grf.frog_id
AND grf.lion_id = lin.lion_id
AND frg.tiger_id = tgr.tiger_id
;


CREATE TABLE zebras (
 zebra_id   INTEGER NOT NULL,
 zebra_name VARCHAR(25),
 PRIMARY KEY (zebra_id),
 UNIQUE (zebra_name));

CREATE TABLE dogs (
 zebra_id INTEGER NOT NULL,
 dog_id   INTEGER NOT NULL,
 dog_name VARCHAR(25),
 FOREIGN KEY (zebra_id) REFERENCES zebras (zebra_id),
 PRIMARY KEY (dog_id),
 UNIQUE (dog_name, dog_num));

CREATE TABLE monkeys (
 dog_id      INTEGER NOT NULL,
 monkey_num  INTEGER,
 monkey_name VARCHAR(25),
 PRIMARY KEY (dog_id, monkey_num),
 FOREIGN_KEY (dog_id) REFERENCES dogs (dog_id));

CREATE INDEX mnk_dog_id_idx  ON monkeys (dog_id);
CREAIE INDEX mnk_mnk_num_idx ON monkeys (monkey_num);

CREATE TABLE warthogs (
 warthog_id  INTEGER NOT NULL,
 warthog_num INTEGER,
 color       VARCHAR(25) NOT NULL,
 dog_id      INTEGER NOT NULL,
 monkey_num  INTEGER NOT NULL,
 parrot_id   INTEGER,
 beak        CHAR(l),
 worm_id     INTEGER,
 PRIMARY KEY (warthog_id),
 FOREIGN KEY (parrot_id, beak)    REFERENCES parrots (parrot_id, beak)
 FOREIGN KEY (dog_id, monkey_num) REFERENCES monkeys (dog_id, monkey_nun)
 FOREIGN KEY (worm_id)            REFERENCES worms (worm_id));

CREATE UNIQUE INDEX whg_whg_id_idx ON warthogs (warthog_id)
CREATE INDEX whg_dog_id_idx  ON warthogs (dog_id);
CREATE INDEX whg_mnk_num_idx ON warthogs (monkey_num)
CREATE INDEX whg_wrm_id_idx  ON warthogs (worm_id);
CREATE INDEX IDX_warthogs_1  ON warthogs (monkey_num, dog_id)
CREATE INDEX lOX warthogs_2  ON warthogs (beak, parrot_id);

CREATE TABLE worms (
 worm_id      INTEGER NOT NULL,
 abbreviation CHAR(l),
 PRIMARY KEY worm_id));

CREATE TABLE parrots (
 parrot_id    INTEGER NOT NULL,
 beak         CHAR(1) NOT NULL,
 abbreviation CHAR(1),
 PRIMARY KEY (parrot_id, beak));

CREATE INDEX prt_prt_id_idx ON parrots (parrot_id)
CREATE INDEX prt_beak_idx   ON parrots (beak):

CREATE TABLE deers (
 deer_id   INTEGER  NOT NULL,
 deer_name VARCHAR(40),
 PRIMARY KEY (deer_id));

CREATE UNIQUE INDEX der_der_id_unq_idx ON deers (deer_id);

CREATE TABLE rhinos (
 rhino_id   INTEGER NOT NULL,
 rhino_name VARCHAR(255),
 CONSTRAINT rhn_rhn_name_unique UNIQUE,
 CONSTRAINT PK_rhn PRIMARY KEY (rhino_id));

CREATE UNIQUE INDEX rhn_rhn_id_unq_idx ON rhinos (rhino_id);

CREATE TABLE tigers (
 tiger_id   INTEGER NOT NULL,
 tiger_name VARCHAR(255),
 PRIMARY KEY (tiger_id));

CREATE UNIQUE INDEX tgr_tgr_id_unq_idx ON tigers (tiger_id);

CREATE TABLE frogs (
 frog_id       INTEGER NOT NULL,
 warthog_id    INTEGER NOT NULL,
 rhino_id      INTEGER NOT NULL,
 deer_id       INTEGER NOT NULL,
 sound_id      INTEGER,
 tiger_id      INTEGER,
 leg_length    VARCHAR(255),
 jump_distance VARCHAR(lOO),
 PRIMARY KEY (frog_id));

ALTER TABLE frogs ADD FOREIGN KEY (warthog_id) REFERENCES warthogs
(warthog_id),
ALTER TABLE frogs ADD FOREIGN KEY (rhino_id)   REFERENCES rhinos (rhino_id);
ALTER TABLE frogs ADD FOREIGN KEY (deer id)    REFERENCES deers (deer_id)
ALTER TABLE frogs ADD FOREIGN KEY (sound_id)   REFERENCES sounds (sound id);
ALTER TABLE frogs ADD FOREIGN KEY (tiger_id)   REFERENCES tigers (tiger_id);

CREATE UNIQUE INDEX frg_frg_id_unq_idx  ON frogs (frog_id);
CREATE UNIQUE INDEX frg_w_r_d_t_unq_idx ON frogs (warthog_id, rhino_id,
deer_id, tiger_id);
CREATE INDEX frg_whg_id_idx ON frogs (warthog_id);
CREATE INDEX frg rhn_id_idx ON frogs (rhino_id);
CREATE INDEX frg_der_id_idx ON frogs (deer_id);
CREATE INDEX frg_snd_id_idx ON frogs (sound_id);
CREATE INDEX frg_tgr_id_idx ON frogs (tiger_id);

CREATE TABLE lions (
 lion_id INTEGER NOT NULL,
 deer_id INTEGER,
 PRIMARY KEY (lion_id));

CREATE UNIQUE INDEX lin_lin_id_unq_idx ON lions (lion_id);

CREATE TABLE frogs_lions (
 frog_id INTEGER NOT NULL,
 lion_id INTEGER NOT NULL,
 PRIMARY KEY (frog_id, lion_id));

ALTER TABLE frogs_lions ADD FOREIGN KEY (lion_id) REFERENCES lions (lion_id);
ALTER TABLE frogs_lions ADD FOREIGN KEY (frog id) REFERENCES frogs (frog_id);

CREATE UNIQUE INDEX frg_lin_frg_id_lin_id_unq_idx ON frogs_lions (frog_id,
lion_id);
CREATE INDEX frg_lin_lin_id_idx ON frogs_lions (lion_id);
CREATE INDEX frg_lin_frg_id_idx ON frogs_lions (frog_id);



pgsql-performance by date:

Previous
From: Bruce Momjian
Date:
Subject: Update performance doc
Next
From: Tarhon-Onu Victor
Date:
Subject: Re: a lot of problems with pg 7.4