関数索引はないけれど
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のような形で簡単に書けないので、もしかしたらわりに使うかもしれず。