首页 > 编程知识 正文

mysql表命名长度,mysql中如何表重命名

时间:2023-05-05 12:35:57 阅读:169935 作者:3596

本文为大家分享和参考MySQL预编译功能,具体内容如下

1、预编译的好处

平时使用的是JDBC的PreparedStatement接口,但有预编译功能。 什么是预编译功能? 有什么好处呢?

客户端将SQL语句发送到服务器后,服务器必须始终验证SQL语句的语法格式是否正确,将SQL语句编译为可执行函数,然后执行该语句。 验证和编译语法可能比执行SQL语句所需的时间更长。

您必须多次执行insert语句,但每次插入的值不同,MySQL服务器也必须每次检查和编译SQL语句的语法格式,这太费时间了。 预编译功能是高效的,因为它只对SQL语句执行一次语法校验和编译。

2、MySQL执行预编译

使用MySQL进行预编译可以分为以下三个步骤:

preparemyfunfrom ' select * fromt _ bookwherebid=?' 执行预编译语句,例如

设定变量。 例如,set @str='b1 '

执行语句。 例如,execute myfun using @str

如果需要再次运行myfun,则不需要编译第一步,即语句。

设定变量。 例如,set @str='b2 '

执行语句。 例如,execute myfun using @str

通过查看MySQL日志,可以查看运行的进程。

3、使用Statement执行预编译

使用Statement执行预编译是执行上述SQL语句一次。 connection con=JDBC utils.getconnection (;

statement stmt=con.create statement (;

stmt.execute update (preparemyfunfrom ' select * fromt _ bookwherebid=?' ';

stmt.execute update (' set @ str=' B1 ' );

resultset RS=stmt.execute query (executemyfunusing @ str );

wile(RS.next ) ) }

system.out.print (RS.getstring (1),);

system.out.print (RS.getstring (2),);

system.out.print (RS.getstring (3),);

system.out.println (RS.getstring (4) );

}

stmt.execute update (' set @ str=' B2 ' );

RS=stmt.execute query (executemyfunusing @ str );

wile(RS.next ) ) }

system.out.print (RS.getstring (1),);

system.out.print (RS.getstring (2),);

system.out.print (RS.getstring (3),);

system.out.println (RS.getstring (4) );

}

rs.close (;

stmt.close (;

con.close (;

4、useServerPrepStmts参数

缺省情况下,不能使用PreparedStatement执行预编译。 在url中输入useServerPrepStmts=true参数(MySQL Server

4.1之前的版本不支持预编译,但Connector/J在5.0.5或更高版本中缺省情况下不启用预编译功能。) .

例如,JDBC : MySQL ://localhost :3306/test? useServerPrepStmts=true

这将确保mysql驱动程序只需将SQL语句发送到服务器进行预编译,然后在执行(executeQuery ) )时将参数发送到服务器。 connection con=JDBC utils.getconnection (;

string SQL=' select * fromt _ bookwherebid=?' ;

preparedstatementpstmt=con.preparestatement (SQL;

ptmt.setstring(1,' b1 ';

ResultSetrs=pstmt.executeQuery (;

wile(RS.next ) ) }

system.out.print (RS.getstring (1),);

system.out.print (RS.getstring (2),);

system.out.print (RS.getstring (3),);

system.out.println (RS.getstring (4) );

}

ptmt.setstring(1,' b2 ';

rs=pstmt.executeQuery (;

wile(RS.next ) ) }

system.out.print (RS.getstring (1),);

system.out.print (RS.getstring (2),);

system.out.print (RS.getstring (3),);

system.out.println (RS.getstring (4) );

}

rs.close (;

pstmt.close (;

con.close (;

5、cachePrepStmts参数

如果使用不同的PreparedStatement对象执行同一SQL语句,仍然会发生两次编译的现象。 这是因为编译的函数key未缓存,因此将被编译两次。 如果要缓存编译后函数的key,请将cachePrepStmts参数设置为true。 例如:

JDBC : MySQL ://localhost :3306/test? useserverprepstmts=truecacheprepstmts=trueconnectioncon=JDBC utils.getconnection (;

string SQL=' select * fromt _ bookwherebid=?' ;

preparedstatementpstmt=con.preparestatement (SQL;

ptmt.setstring(1,' b1 ';

ResultSetrs=pstmt.executeQuery (;

wile(RS.next ) ) }

system.out.print (RS.getstring (1),);

system.out.print (RS.getstring (2),);

system.out.print (RS.getstring (3),);

system.out.println (RS.getstring (4) );

}

ptmt=con.preparestatement(SQL;

ptmt.setstring(1,' b2 ';

rs=pstmt.executeQuery (;

wile(RS.next ) ) }

system.out.print (RS.getstring (1),);

system.out.print (RS.getstring (2),);

system.out.print (RS.getstring (3),);

system.out.println (RS.getstring (4) );

}

rs.close (;

pstmt.close (;

con.close (;

6、开批

MySQL批处理也必须使用参数打开。 rewriteBatchedStatements=true

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。