hibernate隐含参数问题。

在hibernate有些书中明确说明,hibernate如果含有隐参,例如:
select aa from AA aa where docChannel = and proState = ? dtsStatus = ?
1.安全;2.可以预加载,速度快。因此项目中都用到了隐含参数。可是在应用的过程中,明显的带有隐含参数的 HQL语句有问题,在百万级的ORACLE数据库中很多出现超时现象,于是翻查资料发现,有一句话这么说:
如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。
说明即使在查询的列已经建立索引,还是会引起全表扫描。
再查找 超时的HQL语句,多数为带有子查询的隐含参数 语句,把隐参换成明参,速度立刻提升,大约比隐参提升有,40-100倍的速度。百思不得 其解。请大侠指教。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值