MySQL 查詢 批量插入 批量更新 優化的詳情介紹

最近在研究mysql的時候,遇到了mysql批量插入、批量更新效率不高的問題,之前一直在用sqlserver,mysql本身效率還是不錯的,這里把提升效率方法記錄下,就不對比時間了,實際測試結果效率提升很多。

創建表結構

1?DROP?TABLE?IF?EXISTS?`b_student`;  2?CREATE?TABLE?`b_student`?(  3???`id`?int(11)?NOT?NULL?AUTO_INCREMENT,  4???`examcode`?varchar(20)?CHARACTER?SET?gbk?NOT?NULL?DEFAULT?'',  5???`stucode`?varchar(20)?CHARACTER?SET?gbk?NOT?NULL?DEFAULT?'',  6???`name`?varchar(20)?CHARACTER?SET?gbk?NOT?NULL?DEFAULT?'',  7???PRIMARY?KEY?(`id`)  8?)?ENGINE=InnoDB?AUTO_INCREMENT=1?DEFAULT?CHARSET=utf8;

?

查詢優化,場景是判斷examcode是否存在

SELECT?1?FROM?b_student?WHERE?examcode='10001'??limit?1;

查詢結果1表示存在,結果null表示不存在

?

批量插入優化,場景批量插入學生信息

INSERT?INTO?`b_student`?(`examcode`,`stucode`,`name`)?VALUES('10001','10001','張三'),('10002','10002','李四');

?

批量更新優化,場景批量更新學生信息

批量插入這里介紹兩種方法(要求表有主鍵),還有其他的方式。

1、replace into方法,根據主鍵更新某列或某幾列,注意:這種方式會把除id和name之外的列清空。

replace into b_student (id,name) values (1,'張三豐'),(2,'李思思');

2、insert into …on duplicate key update 方法,根據主鍵更新update后定義的列

insert?into?b_student?(id,stucode)?values?(1,'20001'),(2,'20002')?on?duplicate?key?update?stucode=values(stucode);

以上兩種方法在批量更新時效率非常高,根據實際情況進行選擇。

?以上就是MySQL 查詢 批量插入 批量更新 優化的詳情介紹的內容,更多相關內容請關注PHP中文網(www.php.cn)!

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享