2012-12-18 2 views
1

나는 타임 스탬프 필드가있는 mysql 테이블을 가지고있다.
이 테이블에 대한 대부분의 쿼리는 where someIntegerIield=? and theTimestampField is null입니다.null 타임 스탬프에서 mysql 테이블 인덱싱

인덱스의 일부로 타임 스탬프 필드를 사용해야합니까?
아니면 타임 스탬프 필드가 null 일 때 0으로 설정되는 다른 필드를 만들고 유지해야합니까?

다른 대안도 환영합니다.

+0

을 위해 내가 잘못 될 수 있지만, 지금까지 수 MySQL은 ** IS NULL 조건을위한 인덱스를 ** 사용할 수 없다는 것을 알고 있습니다. –

+0

당신도 옳을 수도 있습니다. 어떤 아이디어가 검증 될 수 있습니까? – epeleg

+0

또는 'timestamp1과 timestamp2 사이의 시간'에 인덱스를 사용할 수 있습니까? – epeleg

답변

0

예, "timestamp1과 timestamp2 사이의 시간"에 대한 색인을 사용할 수 있습니다. MySQL/InnoDB의 디폴트 인덱스 타입은 BTREE이다. 이것은 접두사뿐만 아니라 비교 (<,>, 사이)와 함께 작동한다. 그리고 예, MySQL은 인덱스 조건에 IS NULL/IS NOT NULL을 사용합니다. 일부 테이블 유형 (InnoDB 포함)은 http://dev.mysql.com/doc/refman/5.5/en//is-null-optimization.html입니다. 당신은 MySQL의 이전 버전에있는 경우

, 당신은 항상 "EXPLAIN"시도 할 수 있습니다 : 그것은 (이 등)은 인덱스를 사용하거나하지 않을 경우 당신에게 말할 것이다 쿼리

관련 문제