导入前检查文本列是否唯一
Check if text column is unique before import
我有一个 sql 数据库,其中一列是 varchar 值。这个值总是唯一的,它不是由我决定的,而是由提供数据的第 3 方应用程序决定的,它的长度是未定义的,是数字和字母的混合。我应该补充一点,据我所知,它在数据库中没有被声明为唯一的,你不能为 varchar 类型?
每周我 运行 从 csv 文件导入此数据,但是,我知道如何检查我是否正在导入唯一值的唯一方法是遍历数据库中的每一行并将其与csv文件中的每一行进行比较,以检查相应的值是否唯一。
显然这是非常低效的,并且随着时间的推移随着数据库变大只会变得更糟。
我试过检查 Google 但无济于事,可能是我找错了东西。
任何指点将不胜感激。
- 应用程序是用 C# 编写的
查看 运行 SQL 上的 MERGE 命令而不是 INSERT,这将允许您明确指导对副本执行的操作。
请注意,如果唯一字段被索引为唯一,则搜索值的时间复杂度为 O(LOG(n)) 而不是 O(n)。这意味着插入 N 个值的整体性能是 O(NLog(N)) 而不是 O(NN)。随着 N 变大,这是一个显着的性能改进。
- 在唯一字段上索引 table。
- 在唯一键字段 value.If 上执行 'if exists' 它 return 为真,该行存在,更新该行。如果 return 为假,那么这是一个新行,插入该行。
我有一个 sql 数据库,其中一列是 varchar 值。这个值总是唯一的,它不是由我决定的,而是由提供数据的第 3 方应用程序决定的,它的长度是未定义的,是数字和字母的混合。我应该补充一点,据我所知,它在数据库中没有被声明为唯一的,你不能为 varchar 类型?
每周我 运行 从 csv 文件导入此数据,但是,我知道如何检查我是否正在导入唯一值的唯一方法是遍历数据库中的每一行并将其与csv文件中的每一行进行比较,以检查相应的值是否唯一。
显然这是非常低效的,并且随着时间的推移随着数据库变大只会变得更糟。
我试过检查 Google 但无济于事,可能是我找错了东西。
任何指点将不胜感激。
- 应用程序是用 C# 编写的
查看 运行 SQL 上的 MERGE 命令而不是 INSERT,这将允许您明确指导对副本执行的操作。
请注意,如果唯一字段被索引为唯一,则搜索值的时间复杂度为 O(LOG(n)) 而不是 O(n)。这意味着插入 N 个值的整体性能是 O(NLog(N)) 而不是 O(NN)。随着 N 变大,这是一个显着的性能改进。
- 在唯一字段上索引 table。
- 在唯一键字段 value.If 上执行 'if exists' 它 return 为真,该行存在,更新该行。如果 return 为假,那么这是一个新行,插入该行。