2014-10-06 1 views
1

은 내가 모두 대다 협회 (Offer_Store_mapping 테이블)에 매핑되고, 제공 2 개 테이블, 상점 있습니다. 이제 내가 할 수있는 헤아 렸어요은 주기적으로 저장소에을 제공갱신 좋아 (상점에서 이벤트 헤아 렸어요 즉 수를하고 total_offers 저장 테이블열의 수를 업데이트합니다.) 것이다. 나는 여러 가지 방법으로 시도했지만 얻지 못했습니다. 이 일을 도와주세요.많은 관계에서 최대 절전 모드에서 테이블의 다른 열에있는 개체 수를 업데이트하는 방법은 무엇입니까?

업데이트 : 활성 제공 (. 만료 된 것들을 생략)

감사 라주를 계산해야합니다.

답변

0

난 항상이 작업에 대한 쿼리를 사용합니다.

분리 된 열이 테이블 스키마를 비정규 화합니다. 새 주문을 추가/제거 할 때마다 카운터를 업데이트하려면 데이터베이스 트리거가 필요합니다.

특정 상점에 대한 모든 쿠폰 만 계산하면되기 때문에 쿼리는 항상 어쨌든 색인화해야하는 store_id FK 만 사용해야하므로 index-only scan을 사용할 수 있습니다.

+0

@ ** 블라드 미할시오 ** 귀하의 회신에 감사드립니다. 나는 ** 질문 **을 가지고 있습니다. 이번에는 사용자가 요청할 때마다 계산되지 않는 쿼리의 복잡한 계산이 있습니다. 나는 각각의 열에서 계산하고 업데이트해야합니다. ** 우리가 다른 컬럼으로 계산할 필요가있는 같은 테이블의 컬럼을 업데이트하는 법 ** 고맙습니다. –

+0

주문을 삽입하거나 삭제할 때마다 데이터베이스 트리거를 사용하여 일부 열을 업데이트 할 수 있습니다. 이렇게하면 계산을 DML 작업으로 옮길 수 있으며 읽기 속도를 높이는 동시에 쓰기 속도를 느리게 할 수 있습니다. 계산이 매우 비싸고 쓰기에 시간이 너무 오래 걸리면 별도의 배치 프로세서를 사용하여이 값을 저장하는 영구 캐시를 업데이트 할 수 있습니다. 그러나이 마지막 옵션은 DB 변경과 캐시 업데이트 사이에 시간 간격이 있기 때문에 일관성을 없애줍니다. 따라서 이러한 옵션의 균형을 맞추고 어떤 옵션이 더 적합한 지 확인해야합니다. –

관련 문제