相关疑难解决方法(0)

使用MD5 Hash作为主键与使用int标识作为SQL Server主键的优缺点

我有一个应用程序来处理文件并将其分成多个段,然后将结果保存到sql server数据库中.有许多重复文件(可能具有不同的文件路径),因此首先我浏览所有这些文件并为每个文件计算Md5哈希,并使用[Duplicated]列标记重复文件.

然后每天,我将运行此应用程序并将结果保存到[Result]表中.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])
    )
Run Code Online (Sandbox Code Playgroud)

我要求在FileMd5Hash上加入这两个表.

由于[Result]的行数非常大,我想添加一个int Identity列来将这些连接到表中,如下所示:

    CREATE TABLE [dbo].[FilePath]
    (
        [FilePath] NVARCHAR(256) NOT NULL PRIMARY KEY,
        [FileMd5Hash] binay(16) NOT NULL,
        **[Id] INT NOT NULL IDENTITY,**
        [Duplicated] …
Run Code Online (Sandbox Code Playgroud)

sql database sql-server hash

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

database ×1

hash ×1

sql ×1

sql-server ×1