导入前检查文本列是否唯一

时间:2017-09-12 11:02:46

标签: c# sql sql-server-2016

我有一个sql数据库,其中一列是varchar值。这个值总是唯一的,我不是由我决定的,而是提供数据的第三方应用程序,它的长度是未定义的,是数字和字母的混合。我应该补充说,在数据库中没有声明它是唯一的,据我所知,你不能为varchar类型?

每周我都会从csv文件中导入这些数据,但是,我知道如何检查我是否导入一个唯一值的唯一方法是遍历数据库中的每一行并将其与csv文件中的每一行,用于检查相应的值是否唯一。

显然这是非常低效的,随着数据库变大,随着时间的推移只会变得更糟。

我试过检查Google但没有用,可能是因为我找错了。

任何指针都会非常感激。

  • 应用程序是用C#编写的

2 个答案:

答案 0 :(得分:1)

查看在SQL上运行MERGE命令而不是INSERT,这将允许您明确指导对重复执行的操作。

请注意,如果唯一字段的索引是唯一的,则搜索值为O(LOG(n))而不是O(n)。这意味着插入N值的整体性能是O(N Log(N))而不是O(N N)。随着N变大,这是一个显着的性能改进。

答案 1 :(得分:-1)

  • 在唯一字段上为表格编制索引。
  • 对唯一键字段值执行'if exists'。如果返回true,则该行存在,更新该行。如果返回值为false,则这是一个新行,插入行。