zoukankan      html  css  js  c++  java
  • 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




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

  • 相关阅读:
    终于学会用WinCVS来开源了
    从网上收集EMail(正则表达式,C#源码)
    元宝NewBar发布1.2.0测试版
    使用Gimp切图
    shell编程笔记
    poj2485
    poj 3630 字典树
    杭电oj题目和分类
    强连通分量Kosaraju算法
    随机数的产生
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1976082.html
Copyright © 2011-2022 走看看