前几天。一个用户研发QQ找我,例如以下:

自由的海豚。 16:12:01

岛主,我的一条SQL查不出来结果,能帮我看看不?

兰花岛主 16:12:10

多久不出结果?

自由的海豚 16:12:17

多久都没出结果,一直没看到结果过。

兰花岛主 16:12:26

呵呵。好。

兰花岛主 16:12:39

发下sql和运行计划。

自由的海豚 16:12:55

select n.c1, n.c2,n.c3,n.c4,n.c5

  from (select  count(t.c1), t.c1, t.c2,t.c3,t.c4,t.c5

          from tab1 t

         where t.c2 not in ('val1','val2','val3','val4','val5')

         group by t.c1, t.c2,t.c3,t.c4,t.c5) n

 where not exists

 (select * from (

select  count(s.c2), s.c1, s.c2                     

  from (select m.c1, m.c2,m.c3,m.c4,m.c5

          from tab1 m

         where exists (select c1

                  from tab2 n

                 where c2 > sysdate - 14

                   and m.c1 = n.c1)

           and m.c1 is not null

           and m.c2 not in  ('val1','val2', 'val3', 'val4', 'val5')) s

 group by s.c1, s.c2) t1 where t1.c2 = n.c2)

   and n.c1 is not null;

兰花岛主 16:13:12

这两张表大吗?

自由的海豚 16:13:16

tab1小,tab2亿级以上。两周数据在几千万。

兰化岛主 16:13:22

OK。

兰花岛主 16:16:29

这么改下sql吧:

with t1 as(

select count(t.c1), t.c1,t.c2,t.c3,t.c4,t.c5

  from tab1 t

 where t.c2 not in ('val1','val2','val3','val4','val5')

   and c1 is not null

 group by t.c1, t.c2,t.c3,t.c4,t.c5) 

select t1.c1,t1.c2,t1.c3,t1.c4,t1.c5

  from t1 

where not exists(

select /*+ use_hash(m,n)*/ m.c1, m.c2,m.c3,m.c4,m.c5

   from t1 m,tab2 n

  where n.c2 > sysdate - 14

    and m.c1 = n.c1

    and t1.c2 = m.c2);

兰花岛主 16:16:43

取下运行计划。

自由的海豚 16:16:57

好的。

自由的海豚 16:17:25

兰花岛主 16:17:57

好的。试试吧。

自由的海豚 16:19:28

出结果了,37s

兰花岛主 17:20:21

嗯,好。

兰花岛主 17:20:34

这样能够吗?

自由的海豚 17:20:47

能够了能够了

兰花岛主 17:21:11

嗯,好。那就先这样。不继续调了。

自由的海豚 17:21:30

恩 好的 谢谢岛主

兰花岛主 17:21:53

不客气。忙吧。有事儿联系。

自由的海豚 17:22:18

恩。您忙。。。

至此,对用户这个sql的优化结束,事实上,这个语句应该还有优化的空间,仅仅是,用户说能够了那就能够了,由于优化是无止境的,并且,更进一步优化或许会须要更进一步的信息。且有时会须要更大的修改。鉴于各方面因素,文中对语句和计划进行了处理,记录于此,共勉。

最新文章

  1. sql server 2008中清除数据库日志的sql语句
  2. Effective C++ -----条款23:宁以non-member、non-friend替换member函数
  3. css3实现轮播
  4. SarePoint Powershell Add user to Group
  5. HDU 4513 吉哥系列故事——完美队形II manacher
  6. PHP中9大缓存技术总结(转载 http://www.php100.com/html/php/lei/2015/0919/8969.html)
  7. curl 同时发送多个请求
  8. SQL基础篇---函数及其函数配套使用的关键字
  9. C#,新建的系统服务项目有些机器不能运行
  10. Forward Proxy & Reverse Proxy | 正向代理 和 反向代理
  11. 1230.2——iOS准备(阅读开发者文档时的笔记)
  12. LVS客户端启动脚本
  13. android 使用asm.jar将android手机屏幕投射到电脑
  14. WC2016自测
  15. java - day008 -final ,static ,访问控制符.
  16. python代码检索小引擎
  17. WebDriverException: Message: f.QueryInterface is not a function
  18. Spring Framework 4.0.0发布,首次支持Java 8
  19. Python内置的数据类型--list,tuple
  20. delphi sqlsever 实现存在则更新,不存在

热门文章

  1. element快速开发建站的动态UI------优
  2. 用JS将指定时间转化成用户当地时区的时间
  3. java Collection接口
  4. JVM命令参数指南
  5. Android框架式编程之Android Architecture Components
  6. MSSQL:查看作业情况
  7. MVVM实现ViewModel获取View输入验证状态
  8. resultType和resultMap区别,,,1-1一个订单只能对应一个用户,1对多,一个用户对应多个订单
  9. Java导入excel并保存到数据库
  10. 【SQL】CONNECT BY 层次化查询