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

  • 相关阅读:
    【机器学习】scikit-learn中的特征选择小结
    【机器学习】scikit-learn中的数据预处理小结(归一化、缺失值填充、离散特征编码、连续值分箱)
    【机器学习】随机森林原理与调参小结
    用find命令巧查目录下文件的个数
    git
    数据库删除主键
    Linux安装JDK
    计算机进制
    java虚拟机故障处理工具
    线程的六种状态
  • 原文地址:https://www.cnblogs.com/cuitang/p/14061448.html
Copyright © 2011-2022 走看看