Oracle性能优化顺序表名称来选择最有效的学习笔记

Oracle性能优化顺序表名称来选择最有效的学习笔记

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

        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共同拥有。欢迎转载。但是,如果没有从本节宣布提交权限必须保留,并连接到原来的文章页给出视在位置。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116903.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号