18 表的连接和其他高级调整技术.pptVIP

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
18 表的连接和其他高级调整技术

表连接的初始化参数 排序合并连接和散列连接的性能将取决于特定的初始化参数。如果特定的参数设置不正确,连续的性能可能急剧下降。 排序合并连接和散列连接参数 当oracle执行一系列读操作(例如全表扫描)时,每次从磁盘读取多少数据块。因为排序合并连接经常牵涉到全表扫描,设置这个参数以后,在扫描大表时将降低cost。 排序连接需要对所有表源进行排序,因此需要较大的排序内存。 如果排序内存不能满足排序要求,将会产生磁盘排序(内存和临时表空间交换数据)。这样排序性能将会大大的降低。 同样的对于hash连接也是一样,如果因为内存不足而不能在内存中建立完整的散列表,那么性能将会大大的降低。 因此我们需要设置足够的pga_aggregate_target参数。 如果这个参数设置过大,那么系统会因为物理内存消耗殆尽,而发生swap的使用率增加,降低了整体的系统性能。 类别 嵌套循环连接 排序合并连接 散列连接 优化器提示 USE_NL USE_MERGE USE_HASH 何时使用 任何连接 任何连接 仅用于等价连接 相关资源 CPU、磁盘I/O 内存、临时空间 内存、临时空间 特点 当有高选择性索引或者进行限制性有哪些信誉好的足球投注网站时效率较高,用于快速返回第一次的有哪些信誉好的足球投注网站结果 当缺乏索引或者有哪些信誉好的足球投注网站条件模糊时,该类型的连接比嵌套循环连接有效。可以在有限的内存下工作 当缺乏索引或者有哪些信誉好的足球投注网站条件模糊时,该类型的连接比嵌套循环连接有效。通常比排序合并快 缺点 当索引丢失或者查询条件限制不够时,效率很低 所有的表都需要排序,在结果没有全部找到前不返回数据 为建立散列表,需要大量的内存,第一次返回结果较慢。如果在磁盘上操作速度将极其慢 双表连接:等尺寸表(CBO) SMALL1 10000 rows No Indexes SMALL2 10000 rows No Indexes 示例1 如果初始化参数设置为可以使用散列连接,oracle将使用散列连接。否则将会使用排序合并连接。 访问的第一张表将会是SMALL1,对散列连接来说,这很重要,但是对于排序合并来说,没有什么意义。典型的典型的散列连接将会使用较小的表作为散列表,但是上面的两个表大小一样,因此会按照顺序使用SMALL1. 注意:需要对表继续分析,否则会得到不正确的执行计划,这是CBO的特点。如果执行计划没有按照预期的走,首先对表继续统计分析。 示例2 所有的表都没有索引,并且您将使用ordered提示 如果初始化参数设置为可以使用散列连接,oracle将使用散列连接。否则将会使用排序合并连接。 访问的第一张表将会是SMALL1,对散列连接来说,这很重要,但是对于排序合并来说,没有什么意义。因为使用了orderd提示,因此会按照顺序使用SMALL1作为驱动表. 当设置了初始化参数以后,优化器在原来使用排序合并连接的场所改为使用散列连接。在该连接中,第一张表用于建立散列表、第二张表用作驱动表。如果使用了ordered提示,那么from后面的第一张表将作为散列表。 双表索引连接:等尺寸表(基于成本) SMALL1 10000 rows Indexes on COL1 SMALL2 10000 rows Indexes on COL1 嵌套循环连接、 使用SMALL1表作为驱动表,首先根据第一个表的索引检索驱动表的记录,形成一个行源。然后使用第二个表的索引检索形成第二个行源。 最后,两个行源进行嵌套连接。 如果第一个行源检索的记录很少,第二个行源的连接列上有一个较好的索引,那么速度将会非常的快。 上面使用的是嵌套连接,也可以使用散列和排序连接 如果加上了orderd提示,那么将会使用from后面的第一个表作为驱动表。 强制执行特殊的连接方法 当为一个包含连接的查询选择执行计划时,oracle优化器考虑所有可能的连接方法和表的查询顺序。Oracle尽量估算每一个方案的成本并选择最佳的执行计划。但是因为索引策略很糟糕,有时优化器并未能选择最佳的方案。 连接方法+表的访问顺序 USE_NL、USE_MERGE、USE_HASH可以指定一种连接方法。 ORDERED可以指定特定的连接顺序。 Oracle尽量满足这些提示,但是如果实现不了,提示将会被忽略。 强制执行嵌套循环连接。a表被作为驱动表。 如果a表过大,那么性能会很低下。 强制使用排序合并连接。 强制使用散列合并连接。 在多表连接中除去连接记录 交叉表i作为三个表的连接表,一般这个表会被作为驱动表。可以尝试使用限制条件最多的表作为驱动表,这样当连接第三张表时,您从前两张表连接所获得的结果集将很小。 首先是v和i进行连接,得到一个行源,然后这个行源和l进行连接。最后加上一个过滤条件。 首先是i和v进行连接,得到的行源中已经没

文档评论(0)

qianqiana + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5132241303000003

1亿VIP精品文档

相关文档