设为首页 加入收藏

TOP

PreparedStatement
2011-06-09 12:57:40 来源: 作者: 【 】 浏览:641次 评论:0
From: www.theserverside.com -->SMTH
翻译: SuperMMX
     为什么 PreparedStatement 很重要, 以及怎样"正确"使用他们.
数据库有一个艰苦的工作. 它们不断地从许多客户端读取 SQL 查询, 对数据进行尽
可能高效的 查询. 处理语句可能成为一个代价较高的操作, 但是现在数据库都是很
好的设计, 这样这个困难 被减到最小. 但是这些优化需要应用程序开发者的协助,
这篇文章给你展示一下怎样正确使用 PreparedStatement 来漂亮地帮助数据库执行
这些优化.
一个数据库怎样执行一条语句?
显然, 不要希望这里有许多细节; 我们只看一下对这篇文章比较重要的部分. 当一个
数据库接收 到一条语句的时候, 数据库引擎首先解析这条语句, 查看语法错误. 一
旦语句解析了, 数据库 需要找出最有效的方法来执行这条语句. 这个计算起来代价
很大. 数据库检查什么索引(如果有 的话)能有所帮助, 或者它是否能全部读出一张
表中所有的记录. 数据库根据这些关于数据库所 存数据的统计数字来找出最好的
办法. 一旦制订出查询方案, 就可以由数据库引擎来执行.
需要 CPU 来产生访问方案. 理想的情况, 如果我们把相同的语句给数据库发送两
次, 我们期望 数据库重用第一条记录的访问方案. 这会比第二次重新产生方案要使
用较少的 CPU.
语句缓冲
数据库可以进行调节来做语句缓冲. 通常包含一些类型的语句缓冲. 缓冲使用语句
本身作为关键 字, 访问方案和相应的语句存储在缓冲区中. 这样就允许数据库引擎
对以前执行过的语句所使用 的访问方案进行重用. 举个例子来说, 如果我们向数据
库发送这样一条语句 "select a, b from t where c = 2", 计算好的访问方案就放入缓冲
区了. 如果我们以后再使用同样的语 句, 数据库就能重用以前的访问方案, 这样就
能节省 CPU.
但是要注意, 整条语句是一个关键字. 例如, 如果我们后来发送的语句是 "select a,b
from t where c = 3", 那么就不会找出以前的访问方案. 因为 "c=3" 和 "c=2" 是不一
样的. 所以, 例如:
     For(int I = 0; I < 1000; ++I)
{
PreparedStatement ps = conn.prepareStatement("select a,b from t
where c = " + I);
您看到此篇文章时的感受是:
Tags: 责任编辑:administrator
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇在Java中获取系统属性 下一篇java中有关日期的显示问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

相关栏目

最新文章

图片主题

热门文章

推荐文章

相关文章

广告位