索引 - 少なくともOracleでは、私は他のデータベースについてはわかりません - 基礎となる列からNULLを保管しません。列からすべての値を読み取るように要求しているので、索引付き列を読んでいるにもかかわらず、基数表から索引を読み取る必要があります(カーディナリティの見積もりやその他の要素に関係なく索引を使用する必要がある場合) 。
今や、あなたの列にはNULLがないと言います。本当にあなたが言ったことを意味し、すべての行に 'Y'または 'N'があり、NULLがありません。
これは問題ありませんが、データを取得して検査した後にのみ有効です。むしろ、期待どおりに索引を使用したい場合、Oracleはデータを最初に見ることなくその列にNULLがないことを知る必要があります。つまり、テーブルにはCONSTRAINTが必要です。実際には、列がNOT NULLことになっている場合は、
ALTER TABLE TEMP_TABLE MODIFY (INDICATOR NOT NULL);
また、
SELECT INDICATOR
FROM TEMP_TABLE
WHERE INDICATOR IS NOT NULL -- ADDED!
ORDER BY INDICATOR
は(!それを試してみてください)インデックスを使用しますすることができます。しかし、もし列がNOT NULLでなければならないなら、なぜそれを制約で明示的にしてはいけませんか?
これらは2つの値です。彼らは同じタイプを持っています。2つのタイプの値はありません。 – mathguy
値は同じデータ型ですが、2つの異なる値YとNがあります。 –
テーブルには何行ありますか? –