我试图从Python对mysql服务器执行超过10k的查询,下面是我准备好的查询语句
UPDATE `rates`
SET `in`=%s, `out`=%s, `amount`=%s, `minamount`=%s, `maxamount`=%s
WHERE `from`='EXMRUB' AND `to`='YAMRUB' AND `id_site`= 1问题是它运行得非常慢,我的意思是执行10k更新大约需要5分钟,我如何修改,我的查询使它更快?
发布于 2020-01-02 15:44:23
假设id_site是表的主键,则可以将use a little MySQL trick与executemany结合起来以加快更新:
INSERT INTO rates (id_site, `in`, `out`, amount, minamount, maxamount)
VALUES (%s, %s, %s, %s, %s, %s)
ON DUPLICATE KEY UPDATE
`in`=VALUES(`in`)
, `out`=VALUES(`out`)
, amount=VALUES(amount)
, minamount=VALUES(minamount)
, maxamount=VALUES(maxamount);executemany非常重要,因为它确保循环不是在客户端完成的。
发布于 2020-01-02 15:20:09
您可以使用(``from``, ``to``, ``id_site``)上的索引来加速每个单独的查询。
但是,最好将数据加载到数据库中的一个单独的表中,然后使用join在一条语句中进行更新。
https://stackoverflow.com/questions/59565721
复制相似问题