空文字列で検索すると PostgreSQL のインデックスが効かない

空文字列で検索すると PostgreSQL のインデックスが効かない

2007/02/20 3:53am

きちんと調べたわけじゃないけど、PostgreSQL で空文字列で検索するとインデックスが効かない気がする。

具体的には、こういうやつ。

select * from table where column = '';

tablecolumn にインデックスがあっても、explain してみると Seq Scan になってしまう。

select * from table where column = 'hoge';

とかだと問題ない。Index Scan してくれる。

PostgreSQL が古い 7.4 系のせいかも。MySQL は調べてない。そもそも、空文字はインデックスに含めてない気もしてきた。

とりあえず、空文字の検索で結果がないのが分かってる場合は、クエリを実行せずに無条件で失敗させるのがよさそう。