2011-12-29 5 views
2

일별보기를 추적하는보기 테이블이 있습니다. 이 표를 사용하여 일일 및 월별 꺾은 선형 차트를 표시합니다. 표는 다음과 같습니다 :일일 조회수를 추적하는 좋은 방법입니까?

id, post_id, day, month, year, count. 

즉, 모든 게시물에 대해 365 개의보기 (1 년 단위)가 있습니다. 이것은 제가 1,000 개의 게시물을 가지고 있다는 것을 의미합니다. 나는 views 테이블에 365,000 개의 엔트리를 가지고있을 것이다. 우리는 여러 게시물과 계산 있습니다. 하루에 10 개의 게시물이 있습니다.

나는 post_id, day, monthyear에 색인을 넣었습니다.

테이블이 기하 급수적으로 늘어남에 따라 DB 성능 문제가 발생할 수 있다고 걱정 되십니까? 걱정해야합니까? 아니면 괜찮을까요?

답변

3

나는 너가 너보다 더 어려운 일을하고 있다고 생각한다. 당신은 특별한 장점은 daily_views에 자동 증가 ID를 데이없는 daily_views 테이블을 참조하는 자식 테이블이 없다면

create table daily_views 
(post_id int not null 
, view_date date not null 
, count int not null 
, primary key (post_id, view_date) 
, foreign key (post_id) references post(post_id) 
) 

: 왜 당신은 다음과 같이 정의 된 테이블이 없습니다. 실제로 자연 키보다 덜 유용한 인덱스 공간을 낭비하고 있습니다. post_idview_date입니다.

일, 월 및 연도를 별도의 열로 나눌 경우 이점이 없습니다. 단일 필드로 날짜를 저장하면보다 효율적이며 월, 일 및 년의 날짜뿐만 아니라 모든 날짜 범위에서 쉽게 집계 할 수 있습니다.

이 테이블 형식을 사용하면 성능 및 확장성에 대한 우려를 완화 할 레코드 공간과 사용 된 공간을 최적화 할 수 있습니다. 생성하는 행 수에 관해서는 걱정할 필요가 없다고 생각합니다. 많은 데이터베이스에는 수백만 행의 테이블이 있습니다. 각 행이 가능한 한 컴팩트한지 확인하기 만하면됩니다.

+1

나는 당신이 view_date ... post_date를 의미한다고 생각합니다. –

+0

"일, 월 및 연도를 별도의 열로 나눌 수있는 장점이 없습니다." - 그렇습니다. 2011 년 11 월 20 일부터 2011 년 12 월 10 일까지 뷰를 합산하기 위해 쿼리를 작성하십시오. –

+0

오른쪽 오른쪽 @StephaniePage. 그에 따라 내 대답을 수정했습니다. 감사! –

관련 문제