有两个包含以下列的表:
table1 (id1, id2) //pairs (id1, id2) - are unique
table2 (id2, name) //id2 - is auto incrementing, name - string
从 PHP 我有 100-300 对 (id1, name) 必须插入到具有以下条件的表中:
- 一些 (id1, id2) 对可能不在 table1 中,但“name”可能已经在 table2 中。在这种情况下,只有 table1 必须用相应的 id1、id2 填充。
- 如果 (id1, id2) 对已经在 table1 中 - 那么 table2 中的 'name' 必须更新,如果它不一样。
如何在考虑性能的情况下完成它?
PS:我不能使用外键或熔断表
编辑:这是一个例子,只是为了演示逻辑
给定 100-300 对 (id1,name):
id1 | name
--------------
5 | name0
10 | name1
20 | name2
30 | XXXXX
表 table1 和 table2 要么是空的,要么包含一些记录:
table1: table2:
id1 | id2 id2 | name
-------------- ----------------
5 | 0 0 | name0
| 1 | name1
30 | 2 2 | YYYYY
插入给定的对后,表应包含:
table1: table2:
id1 | id2 id2 | name
-------------- ----------------
5 | 0 0 | name0 <-not touched
10 | 1 1 | name1 <-table1 updated
30 | 2 2 | XXXXX <-changed name
20 | 3 3 | name2 <-inserted into both tables