質問 |
||
| QNo.2790524 | INDEXの仕様 | |
|---|---|---|
| 質問者:susumufire |
PostgreSQL8.1.1(RedHatLinux)にて テーブルのtext列に対してindexを作成しました。 作成した列に対して、LIKE検索を行っております。 しかし、「EXPLAIN」を利用してSQLの実行計画を見たんですが、 「Seq Scan」からしか始まらず、 「Index Scan」という文字が見当たりません。 PostgreSQLにてindexを張った列に対するLIKE検索では、 indexは使用されないのでしょうか? |
|
困り度:
|
||
| 質問投稿日時: 07/02/28 10:39 |
||
回答良回答20pt |
|
| ANo.2 | マニュアルに「前方一致('abc%'等)でないと、インデクスは使用しない」と明記されています。 |
|---|---|
| 回答者:chukenkenkou | |
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| 回答日時: 07/02/28 11:18 |
|
| |
| 参考URL: | http://www.postgresql.jp/document/pg823doc/html/indexes-types.html |
| この回答へのお礼 | 早速のご回答ありがとうございます。 マニュアルに書いてありましたか・・・ 読み落としました。 前方一致ができないとなると、 別の方法を考えたいと思います。 |
回答良回答10pt |
|
| ANo.1 | likeでどんな検索をされましたか? 'xxx%'ならインデックスが使えるけど、'%xxx'だとできないと思いますよ。 |
|---|---|
| 回答者:moritan2 | |
| 種類:回答 どんな人:経験者 自信:自信あり |
|
| 回答日時: 07/02/28 10:46 |
|
| |
| この回答へのお礼 | 早速のご回答ありがとうございます。 LIKE検索で中間一致('%hoge%')を使用しております。 前方一致で利用できないとなると、 中間一致でもできそうにないですね。 |