我有2個表更新查詢服務表現
stock_details
(1M +記錄)與領域
billid
itemid
groupid
qty
stock_details
指標index1
(itemid
,billid
)和index2
(itemid
)
itemmaster
(10K +記錄)與字段
itemid
groupid
itemmaster
有索引index1
(itemid
)和index2
(groupid
)
下面的查詢需要幾分鐘才能完成。我不認爲它是正常的。可能只有很少的記錄或零記錄實際得到更新。我想我已經全部到位索引查詢
UPDATE Stock_details A,Db2.ItemMaster B
SET A.Groupid=B.Groupid
WHERE A.Itemid=B.itemID AND A.Groupid<>B.GroupId
然的選擇查詢
EXPLAIN SELECT A.groupid FROM Stock_details A,db2.ItemMaster B
WHERE A.Itemid=B.itemID AND A.Groupid<>B.GroupId
的解釋,其結果是在這裏 http://i.imgur.com/IR5iWX7.png
它沒有定期運行。但在我的應用程序中有一個Optimize選項,用於檢查是否有任何數據錯誤(我沒有設置外鍵約束)缺少字段等。它運行時有很多其他查詢。所以這一切都需要很多時間才能完成。有沒有其他方法可以重新編寫此查詢? – sjd 2013-04-06 13:35:19
我認爲答案是否定的。但是如果你願意在這個查詢之外看看,那麼你可以做些什麼。例如,同時更新兩個表中的組ID,因此您不需要此檢查。按照我的建議跟蹤一些時間戳,以便使檢查更加高效(當然,您必須添加一個字段和一個索引,但跟蹤創建/更新時間非常標準 - 無論如何,您幾乎總是應該這樣做。 – 2013-04-06 16:08:41
明白了,實際上錯配的機會是微乎其微的,我可以給時間戳一個嘗試,因爲它已經存在於表格中,謝謝 – sjd 2013-04-09 08:01:04