jdbc优化,零碎

本文对比了两种不同的SQL查询方式:一种是在每次循环中构造不同的SQL语句;另一种是使用预编译语句(PreparedStatement)并通过参数化的方式传递变量。通过参数化可以显著减少数据库的解析成本,从而提高应用程序的整体性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 例如: 

     For(int I = 0; I < 1000; ++I) 

PreparedStatement ps = conn.prepareStatement("select a,b from t 
where c = " + I); 
ResultSet rs = Ps.executeQuery(); 
Rs.close(); 
Ps.close(); 


这里不会用到缓冲. 每次循环向数据库发送一条不同的 SQL 语句. 每次循环都重新 
计算新的访问 方案, 用这种方法我们会浪费大量的 CPU 周期. 但是, 看看下一个片 
段: 

PreparedStatement ps = conn.prepareStatement("select a,b from t where c 
= ?"); 
For(int I = 0; I < 1000; ++I) 

ps.setInt(1, I); 
ResultSet rs = ps.executeQuery(); 
Rs.close(); 

ps.close(); 

这样就会高效得多. 发送给数据库的语句在 sql 中使用 @#?@# 符号来参数化. 这意味着 
每次循环 发送的是同一条语句, 在 "c=?" 部分带有不同的参数. 这样就允许数据库 
重用语句的访问方案, 是程序在数据库内部运行得更高效. 这基本上能使你的程序 
运行得更快, 或者使数据库用户能更多 地使用 CPU. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值