JDBC执行sql慢的问题

今天发现JDBC的一个怪问题。

同样的sql,在mysql客户端中执行只要0.6、7秒,但是在JDBC中执行却要十二三分钟!这差距也太大了!而且只是其中一张表如此,查看表结构,很正常,没有索引,连主键都没有,就只有字段,字段类型也没有BLOB、CLOB之类的大数据类型,和其他表相比,字段数量也差不错。那就奇怪了,虽说JDBC是要慢些,但是不至于差别几百倍吧。再对比sql,唯一不同的就是这个慢的sql中使用了大量的convert函数,难道是这个原因?把函数去掉,果然速度提升起来了,和其他表一样快了!由于插入该表需要把中文改成GBK编码,因而使用了大量的CONVERT函数,而且数据量上万,导致使用JDBC执行超级慢。至于为何如此,那就不太清楚原因了,后面再研究下,或者有高手指点下就更好。

那怎么解决这个问题呢?很简单,在执行sql的preparedStatement中有个设置编码的方法:preparedStatement.setBytes,把占位符的数据用getBytes(Charset)转换编码后设进去即可,如:

1
preparedStatement.setBytes( 1 , valeue.getBytes(Charset.forName( "GBK" )));  //其中1为对应的占位符位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值