我对子查询的性能/连接另一个表有一些疑问
INSERT INTO Original.Person ( PID, Name, Surname, SID ) ( SELECT ma.PID_new , TBL.Name , ma.Surname, TBL.SID FROM Copy.Person TBL , original.MATabelle MA WHERE TBL.PID = p_PID_old AND TBL.PID = MA.PID_old );
这是我的SQL,现在这个东西可以运行大约一百万次或更多。我的问题是什么会更快?
TBL.SID
Select new from helptable where old = tbl.sid
或者
from
where
edit1 好吧,此脚本仅运行与r个人一样多的人。
我的程序有2个模块,一个模块填充MaTabelle,另一个模块传输数据。该程序确实将2个数据库合并在一起,因此有时会使用相同的Key。 现在,我正在研究一种不存在重复密钥的解决方案。
MaTabelle
我的解决方案是制作一个“ HelpTable”。key(SID)的所有者生成一个新密钥并将其写入“ HelpTable”。使用此键的所有其他表都可以从“ HelpTable”中读取它。
SID
edit2 我刚想到: 如果一个表作为键可以为空(未链接的外键),那么这将无法与from或?一起使用?
包括Oracle在内的现代RDBM都将大多数联接和子查询优化到相同的执行计划。
因此,我将以对您来说最简单的方式来编写您的查询,并专注于确保您已完全优化索引。
如果您提供最终查询和数据库模式,我们可能会提供详细的建议,包括有关潜在锁定问题的信息。
编辑
以下是一些适用于您的查询的一般提示: