zoukankan      html  css  js  c++  java
  • 分享一篇: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 元组
    python列表
    python字符串方法
    dom节点操作
    vue 跨域配置代理 get/post 请求
    Vuecli版本调整
  • 原文地址:https://www.cnblogs.com/cuitang/p/14061448.html
Copyright © 2011-2022 走看看