• 分享一篇:sql语句中使用子查询,可能会引起查询的性能问题,查询时间会变长


    前段时间,做自动化适配的时候,查找需要的数据的时候,使用到了dblink,跨数据库实例进行访问,整段sql拼接再加上dblink,在plsql查询的时候,性能还不是很长时间,最多2分钟可以查到,前期调试阶段,在plsql里面调,没有留意到这个性能问题,后期,投入自动化使用的时候,就出现问题了,一个脚本,查找需要数据的方法,耗时长达10分钟。

    原始版本设计:

    查找需要数据的原有sql进行拼接筛选

    如:

    select * from student t ,class b where t.studentNo=b.studentNo ....中间省略其他很多过滤的sql

    and t.studentNo not in (select c.studentNo from scort c where c.sort>'90') --中间使用的子查询

    分析耗时长的原因:

      1.使用plsql查询,速度还是可以接受的(使用到索引),使用自动化框架,怎么就变慢了  -- 原因是jdbc框架,没有使用索引来查找

      2.优化:先创建一个临时表,然后再创建关联

    优化之后的sql

    WITH sort_a AS (select c.studentNo from scort c where c.sort>'90')

    select * from student t ,class b,sort_a d where t.studentNo=b.studentNo and t.studentNo=d.studentNo

    备注:可能做开发的同事,比较清楚,一般查询里面,都不建议在sql语句里面加很多的子查询,一般会建立临时表等的去过滤

    with xx as的作用:https://www.cnblogs.com/mingforyou/p/8295239.html

  • 相关阅读:
    python之接口与抽象类
    python之内置函数与匿名函数
    python之常用模块
    python之块包导入
    python之协程函数、递归、二分法
    Ios证书申请流程
    VUE + vue-cli + webpack 创建新项目(2)
    VUE + vue-cli + webpack 创建新项目
    布局的几种方式(静态布局、自适应布局、流式布局、响应式布局、弹性布局)
    浅谈rem布局和vm布局
  • 原文地址:https://www.cnblogs.com/cuitang/p/14061448.html
Copyright © 2020-2023  润新知