2010-03-24 4 views
1

대부분의 레코드에서이 필드는 null입니다. 나는 단지 몇 가지 기록을 깨울 필요가있다.`where wakeup_time <sysdate`에 대한 색인

테이블이 너무 커서 어떤 레코드가 일어나는지 알고 싶습니다. 데이터베이스가 모든 행을 찾는 것을 원하지 않습니다. 당신의 생각을 보여줄 수 있습니까?

답변

0

왜 wakeup_time에서 색인을 생성하지 않으시겠습니까? 또한 3000-01-01과 같이 기본적으로 멀리있는 날짜로 채울 수 있습니다.

+1

wakeup_time의 색인에 동의하십시오. 오라클은 널 값을 인덱싱하지 않으므로 '널찍한'기본값에 동의하지 않습니다. 따라서 널 값이 많은 열의 인덱스는 작지만 기본값이 많은 열의 인덱스는 커집니다. –

2

그냥 (WAKEUP_TIME)에 일반 색인을 만드십시오. WAKEUP_TIME이 Null이 아닌 행만 인덱스에 저장됩니다. WAKEUP_TIMENULL으로 업데이트되면 항목이 색인에서 제거되므로 색인은 사용자의 술어와 일치하는 모든 행을 찾는 가장 효율적인 방법입니다.