欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

怎么优化一下下面的sql运行速度

更新时间: 2014-01-05 02:14:33 责任编辑: Author_N1

 

如何优化一下下面的SQL运行速度?
SELECT  DISTINCT  p.sID AS sID, p.SNAME AS sName, mainOrg.sFName AS sFName 
FROM SA_OPPerson p JOIN SA_OPOrg mainOrg ON p.SMAINORGID = mainOrg.sID  
WHERE  ( p.sID IN ('-') ) OR (p.sID IN (SELECT  pm.SPERSONID AS sPersonID 
FROM SA_OPOrg org JOIN SA_OPOrg orgC ON orgC.sFID LIKE org.sFID || '%' JOIN SA_OPOrg pm ON orgC.sID = pm.sParent  
WHERE  org.sID IN ('-', 'E93A43058AD540C191CEDC9B6C79E940', 'PSN01', 'A3226FBBBB864D92A5FBE925572BBA06') ))   
ORDER BY mainOrg.sFName ASC, p.SNAME ASC
--参考方法--
引用:
SELECT  DISTINCT  p.sID AS sID, p.SNAME AS sName, mainOrg.sFName AS sFName 
FROM SA_OPPerson p JOIN SA_OPOrg mainOrg ON p.SMAINORGID = mainOrg.sID  
WHERE  ( p.sID IN ('-') ) OR (p.sID IN (SELECT  pm.SPERSONID AS sPersonID 
FROM SA_OPOrg org JOIN SA_OPOrg orgC ON orgC.sFID LIKE org.sFID 
--参考方法--
 '%' JOIN SA_OPOrg pm ON orgC.sID = pm.sParent  
WHERE  org.sID IN ('-', 'E93A43058AD540C191CEDC9B6C79E940', 'PSN01', 'A3226FBBBB864D92A5FBE925572BBA06') ))   
ORDER BY mainOrg.sFName ASC, p.SNAME ASC

具体的优化你要提供执行计划的,如下先给你改一下,再试试,你看一下你耗时的是不是在排序上了?

SELECT p.sID AS sID, p.SNAME AS sName, mainOrg.sFName AS sFName
  FROM SA_OPPerson p
  JOIN SA_OPOrg mainOrg ON p.SMAINORGID = mainOrg.sID
 WHERE p.sID IN(SELECT pm.SPERSONID AS sPersonID
           FROM SA_OPOrg org
           JOIN SA_OPOrg orgC ON orgC.sFID LIKE org.sFID 
--参考方法--
 '%'
           JOIN SA_OPOrg pm ON orgC.sID = pm.sParent
          WHERE org.sID IN ('-', 'E93A43058AD540C191CEDC9B6C79E940', 'PSN01',
                 'A3226FBBBB864D92A5FBE925572BBA06')
           union all
           select '-' sPersonID from dual)
group by p.sID, p.SNAME, mainOrg.sFName
ORDER BY mainOrg.sFName ASC, p.SNAME ASC


--参考方法--
1 distinct 和order by 是很消耗资源的,你看看能不能从业务上把这两个去掉?
2 把or语句去掉,中间用union all连接两个结果集
3 第二个语句中,将表与表关联的方法把in去掉
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:14:33
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7435/
本文WWW.DOC100.NET DOC100.NET版权所有。