sql语句优化问题,现在这个sql 运行速度比较慢,怎么优化一下? 谢谢!

littleboys 2004-08-11 02:23:55
Select count(*) FROM T_CL_CUST
WHERE EXISTS
(SELECT * FROM T_BILL_PLAN
WHERE T_CL_CUST.CALL_LIST_ID = T_BILL_PLAN.CALL_LIST_ID AND EXISTS
(SELECT * FROM V_BILL_PLAN WHERE TASK_ID = 0000040142 AND T_BILL_PLAN.PLAN_SEQ = V_BILL_PLAN.PLAN_SEQ));
...全文
164 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
David1289 2004-08-12
  • 打赏
  • 举报
回复
用Exists,in ,distinct 等都是比较耗资源地方式,能不用最好不用。
Croatia 2004-08-11
  • 打赏
  • 举报
回复
内联结,应该比你的exists快,
还有,你可以把你的对各个表的限制,放到各个表里面去,看看执行效果呢。

SELECT COUNT(*)
FROM
(SELECT UNIQUE T1.PK --(Primary Key)
FROM T_CL_CUST T1,T_BILL_PLAN T2,
(select * from V_BILL_PLAN where TASK_ID = 0000040142 ) T3
WHERE T1.CALL_LIST_ID = T2.CALL_LIST_ID AND T2.PLAN_SEQ = T3.PLAN_SEQ)
littleboys 2004-08-11
  • 打赏
  • 举报
回复
性能有很大的改善
littleboys 2004-08-11
  • 打赏
  • 举报
回复
好的,我试试
vision2000 2004-08-11
  • 打赏
  • 举报
回复
up
马前小卒 2004-08-11
  • 打赏
  • 举报
回复
up
sijian2001 2004-08-11
  • 打赏
  • 举报
回复
你套用了两个EXISTS,当然慢啦。你用下面的这个试一试。
SELECT COUNT(*)
FROM
(SELECT UNIQUE T1.PK --(Primary Key)
FROM T_CL_CUST T1,T_BILL_PLAN T2,V_BILL_PLAN T3
WHERE T1.CALL_LIST_ID = T2.CALL_LIST_ID AND T3.TASK_ID = 0000040142 AND T2.PLAN_SEQ = T3.PLAN_SEQ)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧