100만 건 정도가 들어있는 테이블에 입력시간을 나타내는 reg_date를 새로 추가하게 됐습니다.
Mysql 매뉴얼에 보면 date는 3바이트, timestamp는 4바이트입니다.
제가 원하는 등록시간은 date를 하나 timestamp를 하나 크게 상관 없습니다. YYYY-MM-DD 만 알면 되니까요. 단 date는 php에서 입력 처리를 해줘야 하고 timestamp는 mysql의 default current_timestamp를 사용할 수 있다는 점이 다릅니다.
문제는 이 reg_date를 group by 해서 매 시간마다 결과를 내야 합니다. reg_date에서 최근 30일 이내의 입력 건만 뽑아 group by해야 합니다. 100만 건이 넘으니 인덱스를 타야 하는데, 어느 쪽이 더 유리할 지 모르겠습니다. 데이터는 보통 하루에 몇천 개 수준으로 insert, delete 됩니다.
일단 무식한 제 생각에 date를 하면 일별로 나눠지니까 같은 값이 많아서 더 유리할 거 같습니다. timestamp는 초 단위로 바뀌니까 아무래도 같은 값이 덜할 거 같아서요. 물론 이것은 integer 인덱스를 어떻게 만드는 지 구조를 몰라서 드리는 질문이기도 합니다.
Mysql 5.0.x 대에서 date와 timestamp 의 인덱스는 어떤 쪽이 유리할까요? 아니면 바이트 수 차이만 있지 같은 integer 이므로 아무런 차이가 없을까요?
|