如果不存在则插入记录的有效方法,如果存在则获取 ID 并将其用作外键?
Efficient way to insert record if it does not already exist, if it does exist get the ID and use it as foreign key?
示例 tables(不是实际数据库):
在本例中,我将使用 SecurityCode(Unique) 和时间。我当前的解决方案包括尝试使用安全代码添加新的 Person,然后查询 ID,然后添加到 Times table。这是 3 个单独的语句,可能会快得多。关于如何优化它有什么建议吗?
谢谢。
编辑:我之前忘记提到这通常是在一批 30-40 条记录中完成的。
我也在考虑使用 SecurityCode 作为 Times 的外键。
我认为有很多方法可以实现,最简单的:
尝试使用"IF",您只需要在语句的第一步使用它,最后两个与此评估的结果无关。
此外,将您的安全代码保存在一个变量中,然后您将保存一次 table 扫描(您已经有了)
**please note its just pseudo-code**
IF (exists select * from person where securityCode = @securityCode) then
Step 1
End
Step 2
Step 3
你能试试吗?
最快的方法似乎是批量忽略插入所有安全代码,然后使用子查询批量插入所有时间 select 来自 Person 的正确 ID。
示例 tables(不是实际数据库):
在本例中,我将使用 SecurityCode(Unique) 和时间。我当前的解决方案包括尝试使用安全代码添加新的 Person,然后查询 ID,然后添加到 Times table。这是 3 个单独的语句,可能会快得多。关于如何优化它有什么建议吗?
谢谢。
编辑:我之前忘记提到这通常是在一批 30-40 条记录中完成的。
我也在考虑使用 SecurityCode 作为 Times 的外键。
我认为有很多方法可以实现,最简单的:
尝试使用"IF",您只需要在语句的第一步使用它,最后两个与此评估的结果无关。
此外,将您的安全代码保存在一个变量中,然后您将保存一次 table 扫描(您已经有了)
**please note its just pseudo-code**
IF (exists select * from person where securityCode = @securityCode) then
Step 1
End
Step 2
Step 3
你能试试吗?
最快的方法似乎是批量忽略插入所有安全代码,然后使用子查询批量插入所有时间 select 来自 Person 的正确 ID。