NULLデータとINDEX

現場ではまったのでメモ。



RDBで、SQLのWHERE区に「IS NULL」をつけるとINDEXが効かないというのは普通だと思ってたのですが、最近はどうやら事情が違うみたいです。





Oracle
△(限りなく×に近い)
[http://docs.oracle.com/cd/E16338_01/server.112/b56306/indexiot.htm#sthref293:title=マニュアルより引用
]

Oracle Databaseでは、すべてのキー列がNULLの表の行には、索引は作成されません。ただし、ビットマップ索引の場合や、クラスタ・キーの列値がNULLの場合は例外です。

ビットマップ索引は使い所が限定されるので、基本効かないと思って良いでしょう。



SQL Sever
◯らしい
参考
参考

オフィシャルは見つけられませんでした。。


DB2

参考
マニュアル
ユニークキーに対するINDEXならNULLはOKだよ、という風にも読み取れる??



MySQL

参考



PostgreSQL
◯(8.3以降)
参考
参考




Oracleだけダメみたいですね。せめてオプションで使えるようにならないかなぁ。