나는 사용자가 달러 금액을 포함한 금융 거래를 입력 할 수있게하는 시스템을 가지고 있습니다. 트랜잭션이 시스템에 추가되거나 \ 업데이트되거나 제거되면 계정 총계가 다시 계산되어 사용자에게 즉각적으로 표시되어야합니다. 사용자는 시스템의 특정 계정에 액세스 할 수 있지만 모든 계정에 액세스 할 수는 없습니다.계정의 모든 거래 금액의 합계를 계산하는 효과적인 방법
아래는 계정 및 거래 데이터를 보관하는 표의 스크린 샷으로 연결되는 링크입니다.
현재 나는 다음과 같은 쿼리를 사용하는 계정의 총 얻기 위하여 :
select sum(t.Amount)
from [Transaction] t
join [Account] a on a.AccountId=t.AccountId
where [email protected]
내가 수 있습니다 고유하지 않은 비 클러스터형 통해 AccountId에 대한 트랜잭션 테이블에 인덱스와 양의 열이를 AccountId에 의해 신속하게 거래를 찾을 수있는 쿼리.
내가 원하는 것은 수행하지만, 트랜잭션 테이블이 매우 빠르게 성장하고 있으며 현재는 약 1 백만 개의 레코드가 있으며 시간이 지남에 따라 수천만 개가 될 것으로 예상됩니다. 또한 적극적으로 거래를 편집 할 수있는 사용자의 수가 증가하고 있으며,이 중 약 5500 대가 시스템에 있습니다.
시스템을 확장 할 수 있도록 계정의 총 $을 가져올 때 트랜잭션 테이블의 사용을 제한하는 해결책을 모색 중입니다. 나는 그것을위한 2 가지 해결책을 가지고 있습니다 :
- 정보를 필요로 할 때 특정 버튼을 클릭하도록 요구함으로써 계정 총계를 계산합니다. 나는 그 길로 갈지도 모르지만 계정 합계의 실시간 업데이트로 내 옵션을 계속 탐색하고 싶습니다.
- 누적 합계를 다른 곳에 저장하고 계좌 합계를 계산할 때 사용합니다. 이러한 모든 뉘앙스에 대해 알 수있는 단일 인터페이스를 통해 모든 작업을 수행해야하기 때문에 이와 관련된 제한이 있습니다. 누적 합계가 업데이트되었는지 확인해야하기 때문에 데이터베이스에서 트랜잭션을 편집하는 것은 까다 롭습니다.
다른 데이터베이스 성능에 대한 걱정없이 실시간으로 계정 합계를 계산할 수있는 다른 방법을 찾고 있습니다.
텍스트의 벽 !!!! 일부 서식을주세요! 당신이 시도한 SQL과 함께 DB 스키마도 좋을 것이다. –
죄송합니다. 첫 번째 게시물입니다. 일부 비주얼로 더 깨끗하게 업데이트했습니다. – Art