我有一個將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