今天发现了一种可能比好的Sql语句也能提高效率中的Sql语句的格式好构建一点,就是多个Insert语句,以‘;’连接起来成一个sql语句去执行,和之前的那种办法应该是一个类型的,就是这种方式在构造上面多了比较多重复的东西,就是Insert前面的包括表结构的那些语句。不过相对来说这个格式更加好构建一些。
格式例子如下:
INSERT INTO TESTTABLE ( [column0], [column1], [column2], [column3], [column4] ) values ('3195', '4461', '8788', '4858', '1855')INSERT INTO TESTTABLE ( [column0], [column1], [column2], [column3], [column4] ) values ('2850', '1674', '8560', '3476', '9881') ;INSERT INTO TESTTABLE ( [column0], [column1], [column2], [column3], [column4] ) values ('7006', '2068', '8048', '2238', '8549') ;INSERT INTO TESTTABLE ( [column0], [column1], [column2], [column3], [column4] ) values ('8719', '6579', '1240', '4777', '6843') ;INSERT INTO TESTTABLE ( [column0], [column1], [column2], [column3], [column4] ) values ('4105', '9805', '6685', '1637', '1899') ;INSERT INTO TESTTABLE ( [column0], [column1], [column2], [column3], [column4] ) values ('5869', '4243', '2965', '6978', '3251') ;INSERT INTO TESTTABLE ( [column0], [column1], [column2], [column3], [column4] ) values ('9550', '7475', '9988', '7661', '2077')最后一个Insert不能要’;’,用这种格式,像上一篇中介绍的每100个Insert组合成1个Sql去执行,插入1W条记录的时间大概就2-3秒钟。速度上还是比较令人满意的了。
现在的问题还是回到了构造Sql语句上面了。通过取出来的源数据DataTable和目标数据库的表结构去构建Insert语句。发现这种情况只能适用于那种没有二进制字段的表,要是涉及到二进制字段的话这种拼接组合Sql的方式就应该不适用了。有二进制字段的话还是得一条记录一条记录的执行插入。
唉,看样子这条路走不通啊。再想别的办法。