昨天本来是一个愉快的周末,我带着心爱的小板凳,坐在小河边悠闲的钓鱼。可是天算不如人算,运维小姐姐带着哭腔的声音告诉我,注册服务崩了,听到的时候,我简直裂开了,今天可是周末,它崩任它崩,我…
我花费了3分钟返回了家里,打开了电脑,连接上了服务器,一看异常,我就知道是小M,那个小妖精再闹了。连上数据库服务器,咦,你咋还休假了捏,启动mysql服务,启动成功。Easy,顺手查看了日志,发现了神奇的事情,一个事务里,有1000条插入语句。年轻人啊,咱们这小破服务器,就别整循环插入了,你循环就循环呗,循环个100次,合并成一句sql他不香吗?
钓鱼也是没法去钓鱼了,就只能摸摸鱼了。
我要奉劝那些不知深浅的年轻人
INSERT INTO TEST1 (ID1,ID2,VAL) VALUES ('4','6','6');
INSERT INTO TEST1 (ID1,ID2,VAL) VALUES ('4','7','6');
INSERT INTO TEST1 (ID1,ID2,VAL) VALUES ('4','6','6'),('4','7','6');
这两个Sql效率比较有可比性吗?就一个字,完爆,不管是从任何方面,产生日志,存入磁盘,连接次数,执行器调用次数,都是完爆啊,唯一的不好可能是再for循环里的多写点无关紧要的代码。
当然如果你写成这样也是有问题的,一次提交辣么多数据,你不怕事务闹矛盾么,他那么金贵,你缺给他那么多的数据,他做不到啊,做人哪,要有度,每次给他一批,等他存进去了,再给他一批,想一想,是不是他就可以长久的当你的工具人了。
另外啊,要注意我们得实现给他排好序,这样他在存数据的时候就不用排序了,嗯,工具人效率更高了。
本文又名,如何高效的使用工具人