나는 수백만 행의 거래 테이블을 가지고 있습니다. 각 행은 거래의 버전을 나타냅니다. 만약 내가 새로운 거래를 할 수 있다면 무역 표의 최신판과 비교할 것입니다. 변경된 경우 새 버전을 추가합니다. 그렇지 않으면 아무것도 수행하지 않습니다. 2 개의 거래를 비교하기 위해 거래 테이블의 버전을 내 애플리케이션으로 읽었습니다.SQL 서버 업데이트 테이블 항목 비교
수십만 개의 새로운 거래가있을 때 제대로 작동하지 않습니다. 일괄 적으로 읽음으로써 한 번에 1000 개의 거래를 읽고 전체 프로세스를 비교하는 데 몇 분이 걸릴 수 있습니다. 항상 DB에 소비됩니다.
나는 새로운 I/O없이 무역 테이블에있는 것과 아마도 새로운 거래를 비교할 방법을 찾고있다. 지금까지 나와야 할 것은 무역 테이블의 각 행에 해시 열을 추가하는 것입니다. 해시는 모든 거래 분야입니다. 그런 다음 새로운 거래가있을 때 해시를 계산하고 값을 임시 테이블에 넣은 다음 다른 테이블을 찾습니다. 이것은 매우 해킹 된 느낌. 그것을하는 더 좋은 방법이 있습니까?
감사
-
SQL Server 2008
Trade(rowid, tradeid, type, trader, volume, etc..)
일부 추가 정보를 원하시면 - rowid
고유은 tradeid
는
의 표에 대한이 같은 무역의 차이 버전의 중복됩니다 30 열 및 정규화되지 않으므로 type
에 따라 일부 열은일 수 있습니다.. 누군가가 수천 개의 거래를 java 서블릿에 게시합니다. 그러면 변경된 모든 거래에 대해 새 행을 추가해야합니다. 불행히도이 작업을 수행하려면 java 서블릿이 수천 개의 거래 중 하나를 읽고이를 비교해야합니다.
가장 최근의 특정 거래는 가장 높은 rowid를 가진 버전 일뿐입니다.
두 테이블의 스키마 (또는 그 중 일부)를 표시 할 수 있습니까? – Thomas
어떤 버전의 SQL Server입니까? – Thomas