51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2207|回复: 3
打印 上一主题 下一主题

ORACLE查询IN的优化问题

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:07
  • 签到天数: 527 天

    连续签到: 4 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2020-3-6 11:23:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    ORACLE查询IN的优化问题
    原来用IN写的sql:
    1. SELECT
    2. O.ID,
    3. (SELECT COUNT(1) FROM USER_LOGIN UL JOIN USER U ON U.IDCARD=UL.IDCARD WHERE U.DEPTID IN(SELECT ID FROM ORG WHERE TYPE!='03' START WITH ID=O.ID CONNECT BY PRIOR ID=PID)) AS TOTALLOGIN
    4. FROM ORG O WHERE O.PID='1000' AND O.TYPE!='03' ORDER BY ID
    5. 用IN写的非常慢118s,然后改成EXISTS:
    6. SELECT
    7. O.ID,
    8. (SELECT COUNT(1) FROM USER_LOGIN UL JOIN USER U ON U.IDCARD=UL.IDCARD WHERE EXISTS(SELECT ID FROM ORG O1 WHERE O1.TYPE!='03' AND O1.ID=U.DEPT START WITH O1.ID=O.ID CONNECT BY PRIOR O1.ID=O1.PID)) AS TOTALLOGIN
    9. FROM ORG O WHERE O.PID='1000' AND O.TYPE!='03' ORDER BY O.ID
    10. 用EXISTS写的也需要118s左右,然后我改成表连接
    11. SELECT
    12. O.ID,
    13. (SELECT COUNT(1) FROM USER_LOGIN UL JOIN USER U ON U.IDCARD=UL.IDCARD JOIN (SELECT ID FROM ORG) A WHERE A.TYPE!='03' START WITH A.ID=O.ID CONNECT BY PRIOR A.ID=A.PID) AS TOTALLOGIN
    14. FROM ORG O WHERE O.PID='1000' AND O.TYPE!='03' ORDER BY O.ID
    复制代码


    速度快了很多,但数据和上面的不一样,感觉少数据,这个不知道是什么问题?

    6、自己做

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-9-30 15:02
  • 签到天数: 751 天

    连续签到: 2 天

    [LV.10]测试总司令

    2#
    发表于 2020-3-9 10:45:54 | 只看该作者
    不知道,来学习下
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:10
  • 签到天数: 1516 天

    连续签到: 5 天

    [LV.Master]测试大本营

    3#
    发表于 2020-3-9 11:02:29 | 只看该作者
    查询范围不一样
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:28
  • 签到天数: 2812 天

    连续签到: 5 天

    [LV.Master]测试大本营

    4#
    发表于 2020-3-9 12:53:20 | 只看该作者
    学习
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-16 20:47 , Processed in 0.066188 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表