如何在MySQL Workbench中批量执行更新与插入语句提升效率
优化MySQL批量更新与插入语句以提升执行效率
批量更新优化
你原来的4条UPDATE语句可以合并成单条,减少对ABCD.ket表的扫描次数,大幅提升执行效率:
UPDATE ABCD.ket SET status = CASE id WHEN '1' THEN '3' WHEN '6' THEN '13' WHEN '5' THEN '33' WHEN '4' THEN '23' END WHERE id IN ('1', '6', '5', '4');
这条语句通过CASE分支一次性匹配所有需要更新的id,仅需一次表操作就能完成所有更新。
批量插入执行
你的INSERT语句针对不同表,无法合并为单条,但可以直接将所有语句放在同一个查询窗口中一次性执行。不过需要先确认MySQL Workbench的设置:
- 打开
Edit->Preferences->SQL Editor - 勾选Allow multiple queries选项(允许执行多语句查询)
完整可一次性执行的脚本
将优化后的更新语句和所有插入语句放在一起,直接运行即可:
-- 批量更新ABCD.ket表 UPDATE ABCD.ket SET status = CASE id WHEN '1' THEN '3' WHEN '6' THEN '13' WHEN '5' THEN '33' WHEN '4' THEN '23' END WHERE id IN ('1', '6', '5', '4'); -- 批量插入各表数据 INSERT INTO abcd.xyz (id, name, age, occp, info, status, emp, modifiedBy) VALUES ('1', 'tyu', '15', 'it', 'good', 'onwork', '101', '1'); INSERT INTO abcd.fgd (id, name, age, occp, info, status, emp, modifiedBy) VALUES ('11', 'aqwqe', '15', 'it', 'good', 'onwork', '111', '1'); INSERT INTO abcd.mvx (id, name, age, occp, info, status, emp, modifiedBy) VALUES ('122', 'poiu', '15', 'it', 'bad', 'onwork', '122', '1'); INSERT INTO abcd.lsv (id, name, age, occp, info, status, emp, modifiedBy) VALUES ('1123', 'poou', '15', 'it', 'good', 'onwork', '131', '1'); INSERT INTO abcd.efg (id, name, age, occp, info, status, emp, modifiedBy) VALUES ('1321', 'fghj', '15', 'it', 'bad', 'onwork', '144', '1');
执行步骤
- 打开MySQL Workbench,连接到目标数据库
- 新建查询窗口,粘贴上述完整脚本
- 点击工具栏的执行按钮(闪电图标),即可一次性完成所有更新和插入操作
内容的提问来源于stack exchange,提问作者Rinkesh
相关产品推荐
相关产品推荐

