H2Databaseを追っかけていたりしたブログ

H2 database のリリースノートを読んだりとか。

関数索引はないけれど

Computed Columns があるから、それに索引つければいいよ!とのこと。

create table birthday(user_id int primary key, birthday date, mon int as month(birthday));
insert into birthday(user_id,birthday) values (1, formatdatetime('2006-10-16','yyyy-MM-dd'));
create index ind_bd on birthday(mon);
sql> explain select * from birthday where mon = 10;
PLAN
SELECT BIRTHDAY.USER_ID, BIRTHDAY.BIRTHDAY, BIRTHDAY.MON
FROM PUBLIC.BIRTHDAY /* PUBLIC.IND_BD: MON = 10 */
WHERE MON = 10
(1 row, 12 ms)

こういう計算で求められる列ってなんていうんだっけ...。生成列?計算列?

トリガーがPL/SQLやPL/pgSQLのような形で簡単に書けないので、もしかしたらわりに使うかもしれず。