MySQL、PostgreSQL、FirebirdのVIEW

パーティショニングの代用としてVIEWが使えないか試してみた。
問題はVIEWでインデックスが適切に使用されるかどうか。


CREATE TABLE t1 (
code INT NOT NULL DEFAULT 0,
name VARCHAR(32) NOT NULL DEFAULT '',
PRIMARY KEY(code)
);
CREATE INDEX t1_name ON p1 (name);

t1〜t2まで作る。

CREATE VIEW v1 AS
SELECT code, name FROM p1
UNION
SELECT code, name FROM p2;

EXPLAIN SELECT * FROM v1 WHERE name='hoge';

MySQL

5.0.10ではインデックスを使用しない。

PostgreSQL

メーリングリストで調べた限りでは2003年頃はインデックスを使用しなかったらしいが、
しかし8.0.3ではインデックスを使用する。

Firebird

1.5ではインデックスを使用しないが、2.0では使用する。