`
heavenslv
  • 浏览: 82289 次
  • 性别: 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
 
分享到:
评论

相关推荐

    oracle_sql 优化-举例.pdf

    1. **选择最有效率的表名顺序**:在基于规则的优化器中,Oracle解析器遵循从右到左的顺序处理FROM子句中的表。因此,基础表(最后处理的表)应为记录数最少的表。这减少了排序和合并操作的负担,从而提高性能。例如...

    Oracle-SQL优化.docx

    在优化 SQL 语句时,需要选择最有效率的表名顺序。不同的表名顺序可以带来不同的优化效果。 2.5 WHERE 子句中的连接顺序 在优化 SQL 语句时,需要注意 WHERE 子句中的连接顺序。不同的连接顺序可以带来不同的优化...

    ORACLE SQL性能优化系列

    在 FROM 子句中,选择最有效率的表名顺序非常重要。 四、其他优化技术 除了以上几点以外,ORACLE 还提供了许多其他的优化技术,例如:索引、视图、物化视图、分区表、并行查询等等。这些技术可以帮助开发者和...

    SQL优化 SQL 优化

    选择最有效率的表名顺序** 在基于规则的优化器中,选择记录较少的表作为基础表可以减少查询成本。 **5. WHERE子句中的连接顺序** - 连接条件应放在前面。 - 过滤条件应放在后面。 **6. SELECT子句中避免使用“*...

    sql优化的几种方法

    #### 一、选择最有效的表名顺序 在构建SQL查询时,尤其是在涉及多个表的连接查询中,表名的顺序对于查询性能有着重要影响。Oracle数据库的解析器是从右向左处理FROM子句中的表名。为了优化性能,应将记录条数最少的...

    SQL优化经验总结34条.pdf

    #### 一、选择最有效率的表名顺序 - **要点**: 在基于规则的优化器(RBO)中,Oracle解析器从右至左处理FROM子句中的表名。为了提高性能,应将记录条数最少的表放在最后,即作为基础表。如果有多于三个表的连接查询...

    Oracle+SQL性能优化40条.docx

    五、选择最有效率的表名顺序 * ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名 * 选择交叉表作为基础表 六、Where 子句中的连接顺序 * Oracle 采用自下而上或自右向左的顺序解析 WHERE 子句 * 表之间...

    oracle SQL优化技巧

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

    SQL优化和SQL执行分析工具Explain的使用详解和示例

    SQL优化一直是数据库领域的重要话题,特别是在大数据量处理和高并发访问的场景下,优化后的SQL查询能够显著提升系统的响应速度和资源利用率。对于数据库管理员(DBA)和开发人员来说,掌握SQL优化技巧和工具是必不可少...

    ORACLE_SQL优化

    ##### 3.4 选择最有效率的表名顺序 - **问题描述**:基于规则的优化器中,表名的顺序会影响查询性能。 - **优化建议**:确保较小的表或已经建立索引的表先被访问。 ##### 3.5 WHERE子句中的连接顺序 - **问题描述...

    SQL优化34条.pdf

    #### 一、选择最有效率的表名顺序 **知识点:** 在基于规则的优化器中,Oracle解析器按照从右至左的顺序处理`FROM`子句中的表名。为了提升查询效率,应当确保`FROM`子句中最后出现的表(基础表driving table)具有...

    oracle优化sql

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

    Oracle Sql 性能优化

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

    oracle SQL优化

    - 在基于规则的优化器中,选择最有效率的表名顺序。 - 在WHERE子句中注意连接顺序,以提高查询效率。 - 在SELECT子句中避免使用‘*’,以减少数据检索量。 - 减少访问数据库的次数,降低I/O消耗。 - 使用DECODE...

    Oracle SQL优化

    ##### 3.4 选择最有效率的表名顺序(仅在RBO中有效) - **原因**: RBO根据表名顺序决定访问顺序。 - **建议**: 根据表大小和选择性调整表名顺序。 ##### 3.5 WHERE子句中的连接顺序 - **原则**: 将最具选择性的...

    Oracle+SQL优化

    **3.4 选择最有效率的表名顺序** - **问题**:表名顺序不当可能影响RBO优化器的性能。 - **建议**:了解表数据分布,合理安排表名顺序,尤其是在RBO模式下。 **3.5 WHERE子句中的连接顺序** - **问题**:连接顺序...

    Oracle提高SQL查询效率(SQL优化).doc

    本文将详细介绍 Oracle 中提高 SQL 查询效率的技巧和策略,包括选择最有效率的表名顺序、WHERE 子句中的连接顺序、SELECT 子句中避免使用‘*’、减少访问数据库的次数、使用 DECODE 函数、整合简单的数据库访问、...

    sql语句优化

    2. **选择最有效率的表名顺序**: 在基于规则的优化器中,Oracle会按照FROM子句中表的顺序从右到左处理。基础表(即FROM子句中最后的表)会被先处理。在多表联接查询中,应选择记录数最少的表作为基础表,以减少...

Global site tag (gtag.js) - Google Analytics