我有一个将40个以上相同结构的数据库合并到一个统一数据库的过程,唯一的区别是统一数据库向每个表添加了一个project_id字段。获取2个几乎相同的表之间的记录差异
为了尽可能地提高效率,我试着只将源数据库中的记录复制/更新到统一数据库,如果它已被添加/更改。我从统一数据库中删除过期的记录,然后复制任何不存在的记录。要删除过时的/更改的记录,我用类似这样的查询:
DELETE FROM <table>
WHERE NOT EXISTS (SELECT <primary keys>
FROM <source> b
WHERE ((<b.fields = a.fields>) or
(b.fields is null and a.fields is null)))
AND PROJECT_ID = <project_id>
这适用于大多数情况,但在源数据库中的一个表有超过70万的记录,此查询接管的小时完成。
如何使此查询更有效?
你有一个索引*字段*? – 2009-10-05 18:46:49