`
Vince_Lee
  • 浏览: 63247 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SQL优化--使用关联查询代替子查询

 
阅读更多

SQL优化--使用关联查询代替子查询

    SQL优化--使用关联查询代替子查询

 

   测试例子:

    子查询:

select a.*,
(
select workflowname from workflowbase where id=workflowid) workflowname
from  [[zping.com]]] a
where a.operator='402882ed1112669201112a8385892f33'

 

   执行结果:

(360 行受影响)
表 
'Worktable'。扫描计数 360,逻辑读取 142334 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 
'workflowbase'。扫描计数 1,逻辑读取 1589 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 
'[zping.com]'。扫描计数 1,逻辑读取 366 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 

 关联查询:

select a.*,b.workflowname
from  [[zping.com]]] a inner join  workflowbase b on a.workflowid=b.id
where operator='402882ed1112669201112a8385892f33'

  执行结果:  

(360 行受影响)
表 
'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 
'workflowbase'。扫描计数 1,逻辑读取 1589 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 
'[zping.com]'。扫描计数 1,逻辑读取 366 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 

   这里:子查询IO次数:142334 +1589+366=144289

           关联查询IO次数1589 +366 =1922

       关联查询是子查询的75倍   

 

总结:

 

     使用子查询和关联查询,一般情况下如果能用关联查询就不用子查询,

分享到:
评论

相关推荐

    SQL实现两张无关联表的数据列合并在一张结果集中

    - **使用JOIN代替子查询**:如果两个表中的数据量都不大,可以尝试使用INNER JOIN等连接方式来代替子查询,这样可以显著提升查询效率。 - **索引优化**:对于涉及的表和字段,合理建立索引可以极大提高查询速度。 - ...

    sql优化的几种方法

    要删除表中的重复记录,可以使用ROWID结合子查询的方式。这种方式利用ROWID快速定位每条记录的位置,从而高效地删除重复项。 #### 九、使用TRUNCATE替代DELETE 当需要删除整个表中的所有记录时,使用TRUNCATE命令而...

    百万数据级快速查询优化技巧

    - 使用查询优化器提示来指导查询计划,如`WITH (INDEX())`,但需谨慎使用,确保不会影响整体性能。 以上技术细节展示了在面对大规模数据集时如何优化数据库查询,通过合理设计查询语句、利用索引、优化数据类型、...

    Oracle 性能优化之 SQL优化

    - 在包含子查询的SQL语句中,应当尽量减少对表的查询次数。例如,可以通过预先创建视图或将查询结果存储在临时表中来实现这一点。 13. **利用Oracle内部函数提高SQL效率** - Oracle提供了许多内置函数,如NVL、...

    SQL优化34条.pdf

    在含有子查询的SQL语句中,应当特别注意减少对表的查询次数。 - **实践建议:** - 避免不必要的子查询。 - 优化子查询的结构,减少对主表的多次访问。 - 考虑使用临时表或物化视图来存储子查询结果。 以上知识...

    数据库面试题索引sql优化

    - 使用内连接(INNER JOIN)代替子查询,以提高性能。 4. **使用分区:** - 对于大型表,可以通过分区来提高查询性能。 - 分区可以基于日期、范围等进行划分。 5. **避免使用SELECT *:** - 明确指定所需的列,...

    SQL优化教程

    - **问题描述**:在含有子查询的SQL语句中,多次查询同一张表会增加查询时间。 - **解决方案**:优化查询逻辑,减少不必要的表查询。 ##### 9. SQL语句用大写 - **问题描述**:Oracle默认将SQL语句转换为大写执行...

    基于Mysql数据库的SQL优化

    - **使用EXISTS代替IN**:在某些情况下,`EXISTS`子查询比`IN`更高效。 通过上述方法和技术,我们可以显著提高基于MySQL数据库的SQL查询性能。需要注意的是,在实际应用中,还需要根据具体的应用场景和需求进行调整...

    SQL查询优化[定义].pdf

    使用JOIN代替子查询有时能提高效率,尤其是当JOIN的关联条件可以利用索引时。另外,适当使用临时表或存储过程也可以帮助优化复杂查询。 总的来说,SQL查询优化不仅依赖于数据库管理系统自身的优化器,更需要程序员...

    SQL优化经验总结34条.pdf

    - **要点**: 在包含子查询的SQL语句中,特别注意减少对表的查询。 - **实践**: 例如,避免不必要的子查询嵌套。 #### 十三、通过内部函数优化查询 - **要点**: 使用Oracle提供的内部函数,如NVL、NULLIF等,可以...

    SQL语句优化,语法优化

    8. **高效删除重复记录**:使用ROWID进行删除,例如通过子查询找到最小ROWID保留一条记录,其他重复记录则删除。 9. **使用TRUNCATE替代DELETE**:当需要删除整个表时,使用TRUNCATE而非DELETE,前者不涉及回滚段,...

    MySQL数据库性能(SQL)优化方案-期末论文.doc

    使用连接(JOIN)来代替子查询(Sub-Queries) 虽然MySQL从4.1版本开始支持子查询,但相比于子查询,使用连接查询通常能提供更好的性能。这是因为连接查询可以避免创建临时表,从而减少资源消耗并加快查询速度。例如,...

    sql脚本的优化方法

    - **关注子查询的性能**:在复杂的SQL查询中,特别需要注意子查询的性能优化。例如,通过减少嵌套查询层数、优化索引使用等方式来提升查询速度。 - **使用EXISTS而非IN**:在某些场景下,使用EXISTS替代IN可以减少...

    Oracle Sql 优化

    虽然`EXISTS`子查询通常比表连接更高效,但在某些场景下,直接使用表连接可以避免额外的子查询,从而提高性能。 ##### 3.18 用EXISTS替换DISTINCT 在某些情况下,使用`EXISTS`代替`DISTINCT`可以简化查询,提高...

    ORACLE培训SQL性能优化.pptx

    在本课程中,我们将深入探讨 SQL 语句执行的过程、ORACLE 优化器、表之间的关联、如何得到 SQL 执行计划、如何分析执行计划等内容,帮助大家逐步掌握 SQL 优化的过程。 首先,让我们了解 SQL 语句的执行过程。SQL ...

    ORACLE_SQL优化

    - **优化建议**:使用临时表或子查询结果集。 ##### 3.16 通过内部函数提高SQL效率 - **问题描述**:某些函数可能导致性能下降。 - **优化建议**:了解并使用Oracle提供的内部函数来提高性能。 ##### 3.17 使用表...

    Oracle数据库SQL优化总结

    11. **减少对表的查询**:避免不必要的子查询,尤其是对同一表的重复查询,可以考虑使用JOIN或临时表。 12. **利用内部函数提高效率**:熟练运用Oracle的内置函数,可以简化复杂查询,提高执行速度。 13. **使用表...

    老司机总结的12条 SQL 优化方案(非常实用).docx

    但请注意的是:优化只针对 SELECT 有效,对 UPDATE/DELETE 子查询无效,固生产环境应避免使用子查询。 2. 用 IN 来替换 OR 低效查询:`SELECT * FROM t WHERE id = 10 OR id = 20 OR id = 30;` 高效查询:`SELECT ...

    mysql子查询的用法

    为了提高查询性能,应考虑子查询的优化策略,如使用EXISTS代替IN,或者将大子查询转换为临时表。例如,使用EXISTS找到销售过至少一件商品的客户: ```sql SELECT customer_name FROM customers WHERE EXISTS ...

    数据库的高级查询,子查询实例

    - 使用JOIN代替子查询,尤其是在处理大量数据时,JOIN往往能提供更好的性能。 6. **案例分析**: 提供的`高级查询数据库子查询.sql`文件很可能包含了各种子查询的实际例子,包括但不限于:找出销售额超过平均销售...

Global site tag (gtag.js) - Google Analytics