我在一个数据库中有两个表,大约50,000至70,000行。两者都是MyISAM。第一种是yahooprice,包含物品的SKU代码(列代码)和定价(列价格)。第二个表combined_stock包含部分编号(与代码相同,但排序不同)、价格、数量和描述。当前价格定义为浮点数10,2,并设置为0.00。我试图使用以下语句将定价从yahooprice(也可以浮动10,2)转到combined_stock:
UPDATE combined_stock dest LEFT JOIN (
SELECT price, code FROM yahooprices
) src ON dest.partnumber = src.code
SET dest.price = src.price我知道这句话是有效的,因为我尝试了一个较小的测试量。它们有部分编号和代码作为非唯一的索引。我还尝试在两个表上建立索引价格,以查看这是否会加快查询速度。从技术上讲,它应该在几秒钟内完成,但上次我试着运行它时,它就在那里呆了一夜,即使这样,我也很确定它没有成功。有人有什么疑难解答建议吗?
发布于 2014-02-24 14:00:04
我建议作一些较小的改动。首先,去掉子查询。其次,切换到内部连接:
UPDATE combined_stock dest JOIN
yahooprices src
ON dest.partnumber = src.code
SET dest.price = src.price;最后,在yahooprices(code, price)上创建一个索引。
如果您真的希望在没有匹配时将价格设置为left outer join,则可以离开该NULL。
https://stackoverflow.com/questions/21989797
复制相似问题