zoukankan      html  css  js  c++  java
  • Oracle性能优化顺序表名称来选择最有效的学习笔记

            选择最有效的顺序表名(只有有效的基于规则的优化)

            ORACLE分析器按照订单处理从右到左FROM在FROM子句中的表名,故FROM写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包括多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最后将全部从第二个表中检索出的记录与第一个表中合适记录进行合并.

    比如:

            表 TAB1:16,384 条记录、表 TAB2:1 条记录

            选择TAB2作为基础表 (最好的方法):运行时间0.96秒

    select count(*) from tab1,tab2 
            选择TAB2作为基础表 (不佳的方法):运行时间26.09秒

    select count(*) from tab2,tab1
           假设有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
    小注:
           本文摘自百度文库,详细链接木有找到。抱歉。


    版权声明:笔者:jiankunking 资源:http://blog.csdn.net/jiankunking 本文版权归作者和CSDN共同拥有。欢迎转载。但是,如果没有从本节宣布提交权限必须保留,并连接到原来的文章页给出视在位置。

  • 相关阅读:
    promise请求数据(all方法)
    右键的点击事件
    微信小程序的接口调用封装
    微信小程序HTTP接口请求封装
    微信小程序得路由跳转
    管理系统得操作与解决思路
    HTTP协议
    动态语言概述
    AsynclAwait
    三种跨域解决方案
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4841045.html
Copyright © 2011-2022 走看看