[pgsql-jp: 26734] Re: Likeの部分一致で検索
Hashimoto, Masaru
hashimoto-m @ comtecc.net
2002年 7月 17日 (水) 17:26:10 JST
橋本です。
> 素朴に「すごいことになってますねぇ」だったりしますが...。
はい、すごいことになってます(^^;
> 部分一致で検索するということでは、総なめしますから
> そうそう速くなることはないとは思いますが、
> 中間一致でいいのであれば、
>
> SELECT Count(*) As cnt FROM tbl
> WHERE
> keyword1 || '::' || keyword2 || '::' || keyword3 || '::' ||
> keyword4 || '::' || keyword5 || '::' || keyword6 || '::' ||
> keyword7 || '::' || keyword8 || '::' || keyword9 || '::' ||
> keyword10|| '::' || keyword11|| '::' || keyword10|| '::' ||
> keyword13|| '::' || keyword14|| '::' || keyword15|| '::' ||
> keyword16|| '::' || keyword17|| '::' || keyword18
> ~* 'windows|ウィンドウズ|ウインドウズ';
>
ご提案ありがとうございます。
この方法で試してみました。
・・・が、はじめよりも遅くなってしまいました。
CountのSQLが17秒になってしまって・・・
ILIKEやLIKE部分をすべて正規表現に変えてやってみたりしたのですが、
どうも正規表現を使ったほうが遅いような感じです。
私の使い方が悪いのでしょうか?
tbl.keyword1 ILIKE '%windows%'
↓
tbl.keyword1 ~* 'windows'
tbl.keyword1 LIKE '%ウィンドウズ%'
↓
tbl.keyword1 ~ 'ウィンドウズ'
それと、項目にNullがあると文字列の結合ができないのですね。
pgsql-jp メーリングリストの案内