Hello,
Is it more efficient to use a schema with Inherits or
schema with Views. I can see logically how to use both
for my case and I'm trying to make a decision. I would
guess that the overhead of the queries against
inherited tables is higher than queries against views,
but I don't know.
At the bottom of this message, I've included the cities /
capitals examples implemented both as schema using
inheritance and as schema using views.
Using the example, I could make queries such as:
SELECT name FROM capitals; -- capitals in inherited
or
SELECT name FROM capital_cities; -- capital cities is a view
But which one would be faster? In my real world example,
I will either have one small base class table (i.e. cities in
the example) and many direct descendents of that base
table (e.g. capitals, beaches, national parks, suburbs
in the example). Or, it could be implemented as one larger
(but not huge) lookup table with many views against
that lookup table.
What would you do?
Thanks!
--dex
--
-- Schema with Inherits
--
CREATE TABLE cities (
name text,
population float,
altitude int -- (in ft)
);
CREATE TABLE capitals (
state char(2)
) INHERITS (cities);
--
-- Schema with View
--
CREATE TABLE all_cities (
name text,
population float,
altitude int,
state char(2)
);
CREATE VIEW just_cities AS SELECT
all_cities.name,
all_cities.population,
all_cities.altitude
FROM all_cities;
-- or perhaps with a where clause, as in
CREATE VIEW capital_cities AS SELECT
all_cities.name,
all_cities.population,
all_cities.altitude
FROM all_cities WHERE (all_cities.state IS NOT NULL);