2011-03-09 3 views
3

SQL 데이터베이스에 날짜를 저장하려고하는데 가장 효율적인 방법이 무엇인지 확신 할 수 없습니다. 나는 두 가지 다른 방법을 생각 해왔다.가장 효율적인 데이터베이스 날짜 저장 방법은 무엇입니까?

첫째, 사람들은 매일 특정 가격을 책정 할 수 있습니다. 2011년 3월 9일 $ (1)

:

년 3 월 8 일 : 예를 들어

$ 2

년 3 월 10 일 : 나는 $ (5) 내 데이터베이스에 대한

했다 UNIX 시간 소인을 저장하거나 월, 일 및 년에 별도의 필드에 저장하는 것을 고려합니다.

첫 번째 방법 :

UNIX 타임 스탬프

프로

  • 하나 개의 필드

단점

  • 는 시작과 끝 날짜 사이의 검색
  • 오류에 수 그린

월/일/년

프로를 검색해야 타임 스탬프 날짜를 변환해야

    쉽게
  • 그래서 데이터베이스를 늦출 수 많은 데이터를 저장 할 것이다 더 많은 공간을 차지

단점

  • 더 많은 필드를 검색 할 수 있습니다.

위의 정보를 사용하면 추천 사항은 무엇입니까? (이 중 하나가 명확하지 않은 경우 나는 명확하게 할 수 있습니다.)

+3

필드를 구분 하시겠습니까? 'DATE' 타입의 문제점은 무엇입니까? – Jon

+3

나는 순수한 "최적화"(따옴표에 유의하십시오)의 양 때문에 단지 투표를하지 않으려 고합니다. 나는 일반적으로이 "제안"을 위해 동료를 때려 눕힐 것이다. –

+3

http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html을 읽으십시오 - 보시다시피 DATE (3 바이트), DATETIME (8 바이트) 및 TIMESTAMP (SQL이 아님) 'spec, 4 bytes)는 비즈니스 요구 사항에 따라 모든 "요구 사항"을 충족합니다. 필자는 TIMESTAMP에 비해 DATETIME의 여분의 4 바이트가 공격적 벤치 마크에서 눈에 would 수도 있다는 것을 의심합니다. –

답변

9

timestamp/datetime/date 필드가 더 효율적입니다 (모두 정수로 저장 됨).
그래서 검색은 입니다. 그 위에 더 많은 검색.
다른 날짜 형식간에 약간의 오버 헤드가 있지만 (보통은 ... 똑똑하지 않은) 날짜 필드로 가입하지 않으면 문제가 없으며 한 번만 발생합니다.
오류가 발생하기 쉬운 방법을 모르겠다.

+0

날짜를 잘못 변환하는 것처럼 오류가 발생한다고 말하고있었습니다. 또한 날짜 필드에 가입하면 무엇을 의미합니까? – Flipper

+0

@Flipper 이는 쿼리의 테이블간에 JOIN을 사용한다는 것을 의미합니다. 날짜 필드를 사용하는 표 사이의 JOIN은 보통 영리하지 않습니다. – Jacob

+0

아. 처음에는 JOIN을 사용하지 않습니다. 결론적으로 다음 중 어느 쪽이 더 효율적입니까? 정수로 저장된 타임 스탬프 또는 SQL에 의해 주어진 DATE 열? – Flipper

2

당신은 DATETIME 또는 DATE 컬럼 유형 사용할 수 있습니다 - 날짜 범위 내에서 검색 검색하기 쉽고 하나의 열 및 쉬운 ...

4

DATE 필드를 사용하십시오. 이것이 그 때문입니다.

+0

네,하지만 정수 저장에 비해 효율적입니까? – Flipper

+1

@Flipper 당신이 알아 차릴만큼 많이 - 그렇습니다. –