3

我有 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

4

2 回答 2

1

我不确定..但试试这个看看...

1) itemid 和 group id 上的索引 togethewr 可能会有所帮助

2)

更新(从 Stock_details A,Db2.ItemMaster B 中选择 A.Groupid,B.Groupid 作为 Groupids,其中 A.Itemid=B.itemID AND A.Groupid<>B.GroupId)k 设置 k.Groupid=k.Groupids

于 2013-04-06T13:30:25.490 回答
1

查询的“非”部分无法有效索引,因此必须扫描每一行。

我想这是你必须定期运行的东西(否则你不会关心它花了多长时间)。您可以做的一件事是跟踪上次运行的时间,并且只考虑从那时起更新的行。

于 2013-04-06T13:19:49.183 回答