파일을 처리하고 여러 세그먼트로 분할 한 다음 결과를 SQL 서버에 저장하는 응용 프로그램이 있습니다. 데이터 베이스. (아마도 다른 파일 경로를 가진) 많은 중복 파일이 있습니다. 그래서 먼저 모든 파일을 검토하고 각 파일에 대한 Md5 해시를 계산하고 [Duplicated] 열을 사용하여 중복 파일을 표시하십시오.MD5 해시를 기본 키로 사용하고 SQL ID를 기본 키로 사용하기
그런 다음 매일이 응용 프로그램을 실행하고 결과를 [결과] 테이블에 저장합니다. DB를 스키마는 다음과 같습니다 :
CREATE TABLE [dbo].[FilePath]
(
[FilePath] NVARCHAR(256) NOT NULL PRIMARY KEY,
[FileMd5Hash] binay(16) NOT NULL,
[Duplicated] BIT NOT NULL DEFAULT 0,
[LastRunBuild] NVARCHAR(30) NOT NULL DEFAULT 0
)
CREATE TABLE [dbo].[Result]
(
[Build] NVARCHAR(30) NOT NULL,
[FileMd5Hash] binay(16) NOT NULL ,
[SegmentId] INT NOT NULL,
[SegmentContent] text NOT NULL
PRIMARY KEY ([FileMd5Hash], [Build], [SegmentId])
)
그리고 FileMd5Hash에이 두 테이블을 조인 할 필요가있다.
CREATE TABLE [dbo].[FilePath]
(
[FilePath] NVARCHAR(256) NOT NULL PRIMARY KEY,
[FileMd5Hash] binay(16) NOT NULL,
**[Id] INT NOT NULL IDENTITY,**
[Duplicated] BIT NOT NULL DEFAULT 0,
[LastRunBuild] NVARCHAR(30) NOT NULL DEFAULT 0
)
CREATE TABLE [dbo].[Result]
(
[Build] NVARCHAR(30) NOT NULL,
**[Id] INT NOT NULL,**
[SegmentId] INT NOT NULL,
[SegmentContent] text NOT NULL
PRIMARY KEY ([FileMd5Hash], [Build], [SegmentId])
)
그래서 찬반의 양론 무엇을 :
[결과]가 매우 큰 행 수, 나는 다음과 같이 테이블이 가입되어있는 int ID 열을 추가 할 때문에
이 두 가지 방법? 기본 키에 대한 GUID를 사용하여 같은 것입니다 MD5 해시를 사용http://databases.aspfaq.com/database/what-should-i-choose-for-my-primary-key.html
:
MD5 알고리즘은 완전히 다른 데이터에 대해 중복 값을 생성 할 수 있습니다.위키 백과를 확인하십시오. 자세한 내용이 있습니다. 나는 더 효율적으로 색인 될 것이므로'int' ID를 사용하는 것이 더 낫다고 생각한다. – cha
당신이하려는 것을 이해하고 왜 ID 열이 필요한지에 대한 정보가 충분하지 않다. – usr