[pgsql-jp: 28018] Re: 文字列を数値でselect する方法
Mashiki
mashiki @ yanah.com
2002年 11月 18日 (月) 23:13:42 JST
Mashikiです。
>やはりIndexはきかなくなるのですか。。。
>ところで、数字変換かけることできかなくなるのでしょうか。
>それとも最初の「Rtrim」したところできかなくなるのでしょうか。
関数や演算が入ったら基本的には効かなくなります。
postgreSQLの場合には、関数インデックスがつけられるので
以下のように関数呼び出しを単純化してから、
create or replace function tonum(char) returns numeric as '
select to_number(ltrim(rtrim($1)),''999999999'') as result;
' language sql with (iscachable);
create index ix_testtable on testtable (tonum(value));
のようにインデックスを張れば、
select * from testtable where tonum(value)=1234
のような、検索のパフォーマンスを向上することができます。
ただ、ぐちゃぐちゃやるより、DBに格納する段階で数値化しておくほうが、
見通しもメンテナンス性もいいでしょう。
pgsql-jp メーリングリストの案内