用hibernate的性能:插入很快,可查询为什么非常慢?????

发表时间: Mar 18, 2004 7:30 PM
回复此消息回复
这是个很老的贴子了,又被推上前台。

hibernate主要是将关系数据库变成面像对像的方式,目的在于开发维护代码的方便性。但在他身上,有些题外的东西却被我们关注得太多,浪费了很多。
像这种性能之类的问题,不只出现在这里,ejb,struts都有问过的贴子
为什么会,基础不牢!
如果,你知道读内存要多少时间,读硬盘数据要多少时间,读连续字节和单个字节时间差多少,知道硬盘的IO是一个还是多个等等,这些看似简单但又基础性的东西,又怎么为这些问题思来想去呢,还做那么多测试。浪费时间而已。

list整体读,iterate先查key再读。在DB分解:
jdbc:
sql传至db(select * from table)-->sql解析-->查索引区-->查表-->找到数据-->数据返回
list:
hibernate将list动作解析成sql(select * from table)-->sql传至db-->sql解析-->查索引区-->查表-->找到数据-->数据返回-->hibernate将数据构造成list
iterate:
hibernate将list动作解析成sql(select key from table)-->sql传至db-->sql解析-->查索引区-->数据返回-->hibernate将数据构造成iterate
对每一次next方法有,hibernate将list动作解析成sql(select * from table where key ..)-->sql解析(只有第一次解析)-->查索引区-->数据返回-->hibernate将数据构造成object

list比jdbc多了什么
一条,hibernate将list动作解析成sql(select * from table)
iterate比jdbc多了什么
多了一次sql解析,多了几次sql传输及数据传输的动作,DB的数据查询上,可以利用IO读连续数据的机率少了些。
如此而已,为什么慢,就这些地方了。

starfeng

发表文章: 18
注册时间: 2003-08

Re: 用hibernate的性能:插入很快,可查询为什么非常慢????? 发表时间: Mar 18, 2004 7:36 PM
回复此消息回复
补充一点点,通常我们用sql都是带上where,上面为了简化,没有加where条件。where体现索引的价值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值