zoukankan      html  css  js  c++  java
  • [Oracle] 接线表

    于OLTP制,嵌套连接占70%左右,哈希联接占20%,合并排序连接帐户10%。

    嵌套连接

    算法:嵌套连接从两个表分选出小表为驱动表,大表为被驱动表。先訪问驱动表(仅仅訪问1次)。然后依据驱动表返回的行数多次訪问被驱动表(被驱动表訪问的次数等于驱动表返回的行数)。

    依据上面的算法,我们能够知道,想要让嵌套连接性能好。必须同一时候满足下面3个条件:

    1)驱动表返回的行数要足够少(降低被驱动表訪问的次数);

    2)驱动表的限制条件要有索引(提高訪问驱动表的性能);

    3)被驱动表的连接条件要有索引(提高訪问被驱动表的性能)。

    前面说过,在OLTP系统中,嵌套连接占了70%,由于OLTP系统返回的数据比較少,非常适合嵌套连接的情形。另一个原因就是,嵌套连接差点儿没有限制。全部的操作都能够用嵌套连接,不像哈希连接和合并排序连接有非常多的限制。

    哈希连接

    算法:哈希连接是从两个表中选出一个小表作为驱动表,大表为被驱动表。依据驱动表构建哈希表,然后被驱动表的每一行在哈希表中进行哈希匹配。

    驱动表和被驱动表各訪问一次。

    依据上面的算法我们能够知道。哈希连接仅仅支持等值连接,它的限制最多。

    想让哈希连接性能好。必须保证驱动表足够小,使得内存PGA能够放下哈希表。

    合并排序连接

    算法:合并排序连接是先分别对两个表进行排序,然后再依据排序结果进行比較合并。合并排序连接没有驱动表和被驱动表的概念。
    合并排序连接的限制条件非常多。支持><,但不支持like和<>
    这样的连接方式最大的性能开销是2次排序,因此在OLTP系统中非常少被用到。



    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    【小强升职记】读书笔记
    MySQL HA 方案 MMM、MHA、MGR、PXC 对比
    【新机必备】
    【LeetCode】剑指 Offer 03. 数组中重复的数字
    生成表索引的创建和删除语句
    iptables 屏蔽端口
    mysql-5.6.20主从同步错误之Error_code: 1062 Duplicate entry '1' for key 'PRIMARY', Error_code: 1062
    OpenFeign和Consul爱恨交织的两天
    Docker:Linux离线安装docker-compose
    MySql:mysql命令行导入导出sql文件
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4887920.html
Copyright © 2011-2022 走看看