인덱스 - 적어도 Oracle에서는 다른 데이터베이스에 대해서는 알지 못합니다 - 기본 컬럼에 NULL을 저장하지 않습니다. 칼럼에서 모든 값을 읽으려고하기 때문에, 오라클은 인덱스 된 칼럼 만 읽는 경우에도 기본 테이블에서 칼럼을 읽어야합니다. 카디널리티 예측 및 기타 요인에 관계없이 인덱스를 사용해야하는 경우입니다. .
이제 열에 NULL이 없다고 말했을 것입니다. 정말로 말한 것을 의미하고 모든 행에 'Y'또는 'N'이 있으며 NULL이 없습니다.
괜찮습니다. 그러나 데이터를 검색하고 검사 한 후에 만 알 수 있습니다. 오히려 인덱스가 예상대로 사용되기를 원한다면 오라클은 먼저 데이터를 보지 않고 해당 열에 NULL이 없음을 알아야합니다. 즉, 테이블에 CONSTRAINT가 필요합니다. 실제로 열은 NULL NOT 있어야 경우,
SELECT INDICATOR
FROM TEMP_TABLE
WHERE INDICATOR IS NOT NULL -- ADDED!
ORDER BY INDICATOR
인덱스를 (그것을 시도!) 사용
또는
ALTER TABLE TEMP_TABLE MODIFY (INDICATOR NOT NULL);
, 할 수있다; 하지만 열이 NOT NULL이 아닌 경우에는 제약 조건을 명시 적으로 지정하지 않는 것이 좋습니다.
두 값이 있습니다. 그들은 같은 유형입니다.두 가지 유형의 값이 없습니다. – mathguy
값은 동일한 데이터 유형이지만 두 개의 다른 값 Y 및 N이 있습니다. –
테이블에 몇 행이 있습니까? –