Ho un'applicazione per gestire un file e frammentarlo su più segmenti, quindi salvare il risultato in SQL Server Banca dati. Esistono molti file duplicati (magari con percorso file diverso), quindi prima di tutto analizzo tutti questi file e computo l'hash Md5 per ogni file e contrassegno il file duplicato utilizzando la colonna [Duplicato].Vantaggi e svantaggi dell'utilizzo di MD5 Hash come chiave primaria rispetto all'utilizzo di un'identità int come chiave primaria in SQL Server
Poi ogni giorno eseguirò questa applicazione e salverò i risultati nella tabella [Risultato]. Lo schema db è come qui sotto:
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])
)
E ho un obbligo di aderire a questi 2 tabella a FileMd5Hash.
Dal momento che il numero di righe di [Risultato] è molto grande, vorrei aggiungere una colonna int Identity per unire queste tabelle come qui sotto:
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])
)
Quindi qual è la Pro e contro di questi 2 modi?
Si noti che l'algoritmo MD5 può produrre valori duplicati per dati completamente diversi.Controlla wikipedia, ha più dettagli. Penso che l'uso di 'int' id sia migliore, in quanto verrà indicizzato in modo più efficiente. – cha
Non ci sono abbastanza informazioni qui per capire cosa stai cercando di fare e perché potresti aver bisogno di una colonna di identità. – usr