`
heavenslv
  • 浏览: 81331 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL优化 ----- 选择最有效率的表名顺序

阅读更多

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
 
分享到:
评论

相关推荐

    SQL语句优化的34条建议

    (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): orACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下...

    oracle优化sql

    oracle优化sql选择最有效率的表名顺序(只在基于规则的优化器中有效) WHERE子句中的连接顺序

    Oracle Sql 性能优化

    1、选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,...

    sql语句的优化方法

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): (2) WHERE子句中的连接顺序.: (3) SELECT子句中避免使用 ‘ * ‘: (4) 减少访问数据库的次数: (5) 在SQL*Plus , SQL*Forms和Pro*C中重新...

    Oracle SQL性能优化

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况...

    Oracle_SQL优化

    选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你...

    ORACLE_SQL语句优化技术分析

    选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你...

    SQL数据库资源大放送

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的...

    ORACLE_SQL性能优化

    1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,...

    SQL语句优化规则

    1.选用适合的ORACLE优化器。2. 访问Table的方式。...4. 选择最有效率的表名顺序(只在基于规则的优化器中有效)。5. WHERE子句中的连接顺序。6.SELECT子句中避免使用 ‘ * ‘ ...(内部涵盖了非常多的优化规则)

    ORACLE SQL 优化

    34个关于SQL的优化建议 (1)选择最有效率的表名顺序: (2)WHERE子句中的连接顺序: ……

    SQL 优化原则

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的...

    SQL数据库优化大总结之百万级数据库优化方案

    (1) 选择最有效率的表名顺序(只在基于规则的seo/’ target=’_blank’>优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在...

    Oracle Sql 性能优化技巧总结

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效) (2) WHERE子句中的连接顺序.: (3) SELECT子句中避免使用 ‘ * ‘ ........

    oracle SQL性能优化

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况...

    ORACLE优化SQL语句,提高效率

     (1)选择最有效率的表名顺序(只在基于规则的优化器中有效):  Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的...

    数据库sql语句优化

    (01)选择最有效率的表名顺序(笔试常考) 数据库的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表放在最后,...

    SQL编写规范(数据库操作规范)

    选择最有效率的表名顺序(只在基于规则的优化器中有效)    ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最先处理    在FROM子句中包含多个表...

    sql语句性能调整原则

    SQL语句调整原则,涉及SQL语句编写注意问题,带通配符(%)的like语句,选择最有效率的表名顺序,减少访问数据库的次数

    写出高性能SQL语句

    写出高性能SQL语句的35条方法 整合简单,无关联的数据库访问、删除重复记录、选择最有效率的表名顺序等等

Global site tag (gtag.js) - Google Analytics