• ORACLE SQL功用优化系列(三)


       本源:网海拾贝




    4. 选择最无恪守的表名挨次(只在基于端正的优化器中有用)

    ORACLE的阐冥具凭据从右到左的挨次处理FROM子句中的表名,因而FROM子句中写在末端的表(底子底细表 driving table)将被最先处理. 在FROM子句中包括多个表的环境下,你必须选择纪录条数最少的表作为底子底细表.当ORACLE处理多个表时, 会运用排序及归并的体式样式衔接它们.首先,扫描第一个表(FROM子句中末端的阿谁表)并对纪录举行派序,然后扫描第二个表(FROM子句中末端第二个表),末端将悉数从第二个表中检索出的纪录与第一个表中相宜纪录举行归并.


    比喻:

         表 TAB1 16,384 笔纪录

         表 TAB2 1      笔纪录

         选择TAB2作为底子底细表 (最好的体式样式)

         select count(*) from tab1,tab2   实行时分0.96秒

        选择TAB2作为底子底细表 (欠安的体式样式)

         select count(*) from tab2,tab1   实行时分26.09秒


    假若有3个以上的表衔接查询, 那就需求选择交叉表(intersection table)作为底子底细表, 交叉表是指阿谁被其他表所引用的表.


    比喻:


       EMP表形貌了LOCATION表和CATEGORY表的交集.


     SELECT *


    FROM LOCATION L ,


          CATEGORY C,

          EMP E

    WHERE E.EMP_NO BETWEEN 1000 AND 2000


    AND E.CAT_NO = C.CAT_NO


    AND E.LOCN = L.LOCN

     

    将比下列SQL更无恪守

     

    SELECT *


    FROM EMP E ,

    LOCATION L ,

          CATEGORY C

    WHERE  E.CAT_NO = C.CAT_NO

    AND E.LOCN = L.LOCN

    AND E.EMP_NO BETWEEN 1000 AND 2000




    版权声明: 原创作品,批准转载,转载时请务必以超链接形式标明文章 原始情由 、作者信息和本声明。不然将深究法规责任。

  • 相关阅读:
    vue----计算与监听属性
    vue---条件与循环语句
    vue--模板语法
    git版本控制系统--介绍
    HttpWebRequest使用总结
    计算机专业的书普遍都这么贵,你们都是怎么获取资源的?
    130 个相见恨晚的超实用网站,一次性分享出来
    实现客户端与服务端的HTTP通讯
    默认网关(地址)
    .NET Reactor使用教程(加密源代码示例)
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1976082.html
Copyright © 2020-2023  润新知