首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate隐含参数有关问题

2012-11-01 
hibernate隐含参数问题。在hibernate有些书中明确说明,hibernate如果含有隐参,例如:select aa from AA aa w

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

热点排行