空文字列で検索すると PostgreSQL のインデックスが効かない
きちんと調べたわけじゃないけど、PostgreSQL で空文字列で検索するとインデックスが効かない気がする。
具体的には、こういうやつ。
select * from table where column = '';
table
の column
にインデックスがあっても、explain
してみると Seq Scan
になってしまう。
select * from table where column = 'hoge';
とかだと問題ない。Index Scan
してくれる。
PostgreSQL が古い 7.4 系のせいかも。MySQL は調べてない。そもそも、空文字はインデックスに含めてない気もしてきた。
とりあえず、空文字の検索で結果がないのが分かってる場合は、クエリを実行せずに無条件で失敗させるのがよさそう。