最近下载了一个2000多万的mssql数据库备份文件,然后用软件将其转为mysql数据库,转过来大约3个G左右,数据占用磁盘量不大,但是数据条数还是挺多的。而且因为是从mssql转过来的缘故,全都是text类型,且除了id意外,没任何索引。如果直接用php来查询这些数据,估计没几分钟甚至几十分钟的时间是查不出任何东西的。于是乎想到了mysql分表。分表的时候是采用hash按照某个字段分的,加之自己略懂一点php,于是乎我按照自己的想法写了一个php的分表小代码:读取n条记录,php处理好后分别插入个分表中。2000万的数据,可不是开玩笑滴,那家伙,一秒钟转存100条记录都要好几秒钟。经分析,读取记录还算比较快,但是插入貌似有点慢了。于是引出了博文标题,mysql insert查询语句性能优化。
究竟如何对insert语句性能优化呢?百度了一下,在插入语句之前和之后分别加上“START TRANSACTION;”和“COMMIT;”,不含引号,问题就得以解决了。现在插入速度那是相当快,一次插入一两千条数据,跟玩似的。注:在“START TRANSACTION;”和“COMMIT;”之间的插入语句类似为:INSERT INTO `table` ( `id`, `content`) VALUES (null, 'content') ,(null, 'content'), (null, 'content');