部分インデックス

http://ja.wikipedia.org/wiki/%E9%83%A8%E5%88%86%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9

 

INDEXを作りたいカラムに"空白"の行や同じデータが多い場合などは、普通にINDEXを作るより部分インデックスにした方が良い。

 

CREATE INDEX "index_name"
ON table ( foo_id ) WHERE foo_id IS NOT NULL AND foo_id != 0;

クエリも工夫すると検索も早くなる。

SELECT * FROM table WHERE foo_id IS NOT NULL AND foo_id != 0;