2011-04-25 5 views
0

"배지"및 "과목"이라는 테이블이있는 데이터베이스가 있는데 누군가가 제안한 이유로 "제목"에 "제목"이 "is_canceled"bool 값이 있습니다. 나 그는이 처음 요약 할 필요가 직선이 아니라 값을 더 나은 성능입니다 말했다 이유데이터베이스 설계, 모범 사례, 필요 조언

"SELECT SUM(is_canceled) as cancel_count FROM subjects WHERE is_canceled = 1 AND badge_id = ".$some_badge_id 

와 동일한 값을 갖는다 "canceled_subject_count"라는 "배지"의 필드를 가지고하는

너희들은 어떻게 생각하니? 이 분야가 있어야합니까? 그리고 왜?

감사합니다.

답변

5

이것은 denormalization입니다. 초기 데이터베이스 설계 의 경우이 작업을 수행하면 나중에 시간과 노력을 절약 할 수 있지만시기 상조적인 최적화라고 볼 수 있습니다. 이 아닌 필드를 추가하는 것이 더 좋으며 일부 프로파일 링 후에 취소 된 제목을 배지 카운트 할 때 측정 된 성능 병목 현상을 발견하면 필드를 추가 할 수 있습니다.

+0

+1. 좋은 대답 :) –

0

정말 소프트웨어 사용에 따라 다릅니다. 이러한 종류의 최적화는 가치가 변경되는 빈도, 열어 본 사람들의 수 등에 따라 달라집니다.

거의 변경되지 않으면 변경 사항이 저장 될 때 값을 저장하고 업데이트하는 것이 더 현명한 방법입니다.

합계가 계속 변경되는 경우 각 쿼리를 통해 합계를 계산하는 것이 더 똑똑합니다.

엄청난 양의 요청을 처리하지 않는 한이 금액은 거의 비용이 들지 않으며 데이터 무결성을 유지하기가 쉽습니다.

관련 문제