1

히트 카운터를 계획하고 있으며 하루, 지난 주, 지난 달 등 총 조회수를 표시하는 많은 보고서 쿼리를 계획하고 있습니다. 특정 페이지에 대해 특정 날짜 범위 내에서 가장 인기가 많은 시간대를 보여주는 차트를 제공 할 수 있습니다.조회수 : 날짜 + 시간 필드 대 날짜 시간 필드 2 개

이것을 염두에두고 TIME에서 별도의 필드에 DATE을 저장하면 색인이 추가됩니다. 나는이 쿼리 중 일부에 대해 범위가 x보다 크고 y보다 작은 where clause을 사용할 것입니다. DateTime에 대해 묻는 질문이있을 것으로 예상됩니다 (예 : 지난 6 개월 내에 하루 중 시간별로 그룹화 된 조회수를 표시).

나는 그것을 복잡하게 해석합니까? 하나의 DateTime2(0) 필드를 사용해야하나요, 아니면 두 필드를 사용하는 데 약간의 이점이 있습니까?

+0

나는 간단한 datetime에 대해 말할 것입니다. 궁극적으로 두 개의 별도 필드를 유지하는 것이 유용 할 수도 있지만 가장 많이 발생하거나 가장 적은 횟수가 발생한 요일과 시간 범위가 항상 필요합니다. 날짜와 시간을 한 열에 쉽게 유지하는 데 도움이되는 DATEPART와 같은 기능이 있으므로 더 이해할 수 있습니다. – Sam

+1

DateTime은 모든 용도에 적합합니다. 하루 중 특정 시간 동안 DATEPART를 @Sam으로 언급 할 수 있습니다. 더 세분화하기 위해 (예 : 30 분 청크) DATEDIFF (MINUTE, 0, DATE) % 1440/30과 같은 펑키 한 자료를 사용하여 48 시간 분량의 세그먼트로 분류 할 수 있습니다. – ZLK

+1

지금까지 Date 필드로 사용하기에 더 좋은 시간 필드 (테이블)에 유용한 목적을 찾지 못했습니다. 나는 네가 너무 영리하다고 생각하고, 너는 그것을 과도하게 생각하고있다. –

답변

1

나는이 접근 방식으로 premature optimization에 접경하고 있다고 생각합니다.

날짜 시간을 사용하십시오. 적시에 (즉, 애플리케이션이 Production에 도달하고 실제 요구 사항 및 수행 방법에 대해 더 잘 이해 한 후),보고/쿼리에 더 유용한 방법으로 데이터를 집계하기 위해 뷰를 도입 할 수 있습니다 자주 수행 할 수 있습니다.

가장 극단적 인 경우 스키마를 리팩터링하고 Datetime에서 두 개의 다른 필드로 모든 항목을 마이그레이션 할 수도 있지만 이것이 필요한 것으로는 의심 스럽습니다.

+0

네, 생각해 보면, 조숙 한 최적화라고 생각합니다. 불필요한 합병증을 저에게 안겨 주셔서 감사합니다. – ToddBFisher

관련 문제