如果还不存在,插入记录的有效方式(如果确实存在)获取ID并将其用作外键?

时间:2018-09-26 12:05:15

标签: mysql sql database database-design relational-database

示例表(不是实际的数据库):

Example tables

在此示例中,我将拥有SecurityCode(Unique)和Time。我当前的解决方案涉及尝试使用安全代码添加新的人员,然后查询ID,然后添加到Times表。这是3个单独的语句,可能会快很多。关于如何优化它的任何建议?

谢谢。

编辑:我之前忘记提到此操作通常在30-40条记录中进行。

我也在考虑将SecurityCode用作Times中的外键。

2 个答案:

答案 0 :(得分:0)

我认为有很多方法可以做到这一点,最简单:

尝试使用“ IF”,您只需要在语句的第一步中使用它,后两步与评估结果无关。

此外,将安全代码保存在一个变量中,然后将保存一个表扫描(您已经拥有了)

**please note its just pseudo-code**

IF (exists select * from person where securityCode = @securityCode) then
    Step 1
End

Step 2
Step 3

可以尝试吗?

答案 1 :(得分:0)

最快的方法似乎是批量忽略插入所有安全代码,然后使用子查询批量插入所有Times,以从Person中选择正确的ID。