我在MySQL中运行一个非常简单的proc,与此类似:
insert into link_table ( primary_key_1, primary_key_2 )
select
table1.primary_key,
table2.primary_key
from
table1
inner join table_ref on table_ref.field_name1 = table1.field_name
inner join table2 on table2.field_name = table_ref.field_name2
这个字符串比较连接比我预期的要长,每个插入大约1.5秒,在大约8000行中运行。
据我了解,每个过程/查询都在用户的上下文中执行。这意味着如果用户失去连接或电源,那么查询将失去上下文,因此事务失败。
有没有办法将程序的执行上下文转移到"系统"用户或类似的东西?这样我就可以去喝咖啡看电影等等。
答案 0 :(得分:0)
关于" context"的问题更适合dba.stackexchange.com。但是,您可以使查询更有效。这是查询:
insert into link_table( primary_key_1, primary_key_2 )
select table1.primary_key, table2.primary_key
from table1 inner join
table_ref
on table_ref.field_name1 = table1.field_name inner join
table2
on table2.field_name = table_ref.field_name2;
您应该能够使用以下索引加快此查询:
table_ref(field_name1, field_name2)
table2(field_name, primary_key)
提高性能可能会解决您的问题。