1.prepareStatement vs statement
(1)prepareStatement预编译SQL语句,批处理效率高
什么是预编译,好处?(参考https://blog.csdn.net/Marvel__Dead/article/details/69486947)
当客户发送一条SQL语句给服务器后,服务器总是需要校验SQL语句的语法格式是否正确,然后把SQL语句编译成可执行的函数,最后才是执行SQL语句。其中校验语法,和编译所花的时间可能比执行SQL语句花的时间还要多。
注意:可执行函数存储在MySQL服务器中,并且当前连接断开后,MySQL服务器会清除已经存储的可执行函数。
如果我们需要执行多次insert语句,但只是每次插入的值不同,MySQL服务器也是需要每次都去校验SQL语句的语法格式,以及编译,这就浪费了太多的时间。如果使用预编译功能,那么只对SQL语句进行一次语法校验和编译,所以效率要高。
看个例子:
statement:
stmt = conn.createStatement();
//循环
for(){
stmt.executeUpdate(sql);
}
prepareStatement:
ps = conn.prepareStatement(sql);
//循环
for(){
ps.setString(1,"");
ps.set