hibernate之优化抓取(优化指导方针---笛卡尔积问题)
来源:互联网 发布:河北都市网络电视台 编辑:程序博客网 时间:2024/05/28 17:08
hibernate之优化抓取(优化指导方针---笛卡尔积问题)
笛卡尔积问题
与n+1查询问题相反的是抓取过多数据的SELECT语句。如果试图抓取几个"并行的"集合,少不了会出现这个笛卡尔积问题。假设你已经决定把一个全局的fetch="join"设置应用到Item的一个bids集合。Item类有其它的集合(例如images)。也假设你决定每件货品的所有图片都必须即时通过fetch="join"策略始终被加载:
如果通过一个即时的外部联结抓取策略映射两个并行的集合(它们自己的实体也一样),并加载所有的Item对象,Hibernate就执行一个创建这两个集合的乘积的SQL SELECT:
这个结果集包含大量多余的数据。
如果用fetch="subselect"映射这个并行的集合,就会得到3个查询:这就是对并行集合所建议的优化。然而,每一种规则都有例外。只要集合很小,乘积就可能是可以接受的抓取策略。注意,通过外部联结SELECT即时抓取的并行的单值关联一般不会产生乘积(也就是说,在使用fetch="join"时,在<many-to-one>,<one-to-one>这些单值关联的情况下,是不会产生笛卡尔积的,如果用在集合中,就会有笛卡尔积的现象。)
最后,虽然hibernate让你通过fetch="join"在2个(或者甚至更多个)并行的集合中创建笛卡尔积,但是如果你试图在并行的<bag>集合上启用fetch="join",它就会抛出异常。乘积的结果集无法被转化为包集合,因为hibernate无法知道哪些行包含有效重复以及哪些行不包含。如果使用包集合,就不启用导致乘积的抓取策略。给包集合的并行即时抓取使用子查询或者立即的二级查询抓取。
- hibernate之优化抓取(优化指导方针---笛卡尔积问题)
- hibernate之优化抓取(优化指导方针---n+1查询问题)
- plsql优化笛卡尔积
- hibernate之优化抓取(关于fetch属性)
- hibernate之优化抓取(定义全局抓取计划)
- 一个笛卡尔积的优化
- Google优化网站管理员指导方针
- Google优化网站管理员指导方针
- 【Hibernate】Hibernate性能优化之延迟加载与抓取策略
- hibernate之优化抓取(选择抓取策略之批量预抓取数据)
- hibernate之优化抓取(选择抓取策略之批量预抓取数据--实例1)
- hibernate之优化抓取(选择抓取策略之批量预抓取数据--实例2)
- hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合)
- hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合--实例)
- hibernate之优化抓取(选择抓取策略之通过联结即时抓取)
- hibernate之优化抓取(选择抓取策略之通过联结即时抓取--实例1)
- hibernate之优化抓取(选择抓取策略之通过联结即时抓取--实例2)
- (十五)Hibernate之性能优化之抓取策略
- C++网络编程之——简易的服务器端与客户端
- 计算机网络的组成与分类
- 计算机网络的体系结构与协议
- Net架构学习总结一
- Java基础了解
- hibernate之优化抓取(优化指导方针---笛卡尔积问题)
- 面向对象的程序设计介绍
- Java的面向对象特性
- 让linux上用飞信
- SAP Screen Output
- Connection to host as user oracle failed: ERROR: NMO not setuid-root
- 主题:向大家推荐一个C/C++通用Makefile
- Oracle的直接简便安装方法(linux)
- Oracle的直接简便安装方法(linux)