2013-04-13 46 views
1

我有一个node.js脚本作为服务器上的cron作业运行。加速MySQL中巨大的多个查询语句的性能

它异步接收来自外部数据源(几个并发请求)的数据并使用多个查询语句更新数据库,其中UPDATE查询以分号分隔。

一个8000-UPDATES多查询运行约55秒。

有没有办法加快整个数据库更新过程?

单查询很简单 - 像

UPDATE my_table SET field1 = smth WHERE id = some_id; 

该指数为ID场创建。

+0

向我们展示您的查询和索引,以便了解查询的结构。有多少个查询? – Niels

+0

是的,我第二次展示查询,架构和每个表的行数,没有那个信息只是猜测。 – CodeMonkey

+0

我更新了帖子:) – zavg

回答

1

减少执行的查询次数将是您最大的胜利。也许是一个INSERT ...在复制密钥更新

INSERT INTO my_table (id, field1) 
    VALUES 
     (1, 'smth'), 
     (10, 'smth2'), 
     (88, 'smth3'), 
     (23, 'smth4'), 
     (68, 'smth5') 
    ON DUPLICATE KEY UPDATE 
     id = VALUES(id), 
     field1 = VALUES(field1); 
+0

谢谢你好多!它是如何工作的惊人! :)) – zavg