Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql-使用大型相互依赖表(联接表)插入更新的最快方式_Mysql_Join_Optimization_Insert_Rdbms - Fatal编程技术网

Mysql-使用大型相互依赖表(联接表)插入更新的最快方式

Mysql-使用大型相互依赖表(联接表)插入更新的最快方式,mysql,join,optimization,insert,rdbms,Mysql,Join,Optimization,Insert,Rdbms,我有两张桌子 表1: 包含列 id、姓名、电子邮件 注意:列电子邮件具有唯一的约束 表2: 包含列 id,表1\u id,地址 我有一个额外的csv文件,其中包含两个表的记录,即姓名、电子邮件和地址,我想在以下情况下将这些csv行插入并更新到表1和表2中: 场景1-表1中不存在电子邮件在表1和表2中插入记录 场景2-如果电子邮件id已经存在,则不应影响表1中的,但表2的地址列应得到更新 在MySQL中,编写查询以实现这一点的最快、最有效的方法是什么。将CSV加载到其中。更新两个表的数据(将忽

我有两张桌子

表1: 包含列
id、姓名、电子邮件

注意:列电子邮件具有唯一的约束



表2: 包含列
id,表1\u id,地址

我有一个额外的csv文件,其中包含两个表的记录,即姓名、电子邮件和地址,我想在以下情况下将这些csv行插入并更新到表1和表2中:

场景1-表1中不存在电子邮件在表1和表2中插入记录
场景2-如果电子邮件id已经存在,则不应影响表1中的,但表2的地址列应得到更新


在MySQL中,编写查询以实现这一点的最快、最有效的方法是什么。将CSV加载到其中。更新两个表的数据(
将忽略插入表1
替换到表2
)。DDL+3 DML查询总数。@Akina谢谢。表1和表2都是大表。考虑到我的场景,您能在两个表中指定最快的insert或update查询吗explained@Akina如何直接写入替换表2,因为电子邮件id列仅存在于表1中最后一个查询的数据源将更新
表2
将由两个表组成-临时源表和
表1
合并通过
电子邮件
@Akina您是否可以建议其他方式,而不考虑任何额外的表格