免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3037 | 回复: 1
打印 上一主题 下一主题

SQL优化 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-07 15:18 |只看该作者 |倒序浏览
下面SQL执行很慢,帮我优化一下
SELECT top 10 PROJECTS_INFO.PROJECT_NO, PROJECTS_INFO.PROJECT_NAME, PROJECTS_INFO.P_DATE_START, PROJECTS_INFO.P_DATE_END,PROJECTS_INFO.CUSTOMER,
PROJECTS_INFO.MITUMORIIRAINO, PROJECTS_INFO.PROJECT_SALE, PROJECTS_INFO.PJTOUROKUHI, PROJECTS_INFO.OYAPJNO, PROJECTS_INFO.PROJECT_PAYOUT,
PROJECTS_INFO.PROJECT_TL, PROJECTS_INFO.SALE_UNIT,PROJECTS_INFO.PAYOUT_UNIT,PROJECTS_INFO.PROJECT_PL, TLS.TL_NAME, PLS.PL_NAME,
PROJECTS_INFO.STOPFLAG,PROJECTS_INFO.QATANNTOU ,QAS.QA_NAME , PROJECTS_INFO.MITUMORIKENTO,PROJECTS_INFO.BICO,
T_PJKIHONNKEIKAKU.KANNRYOUHOUKOKUHI, T_PJKIHONNKEIKAKU.SYOUNINNHI AS IMPLAN_SYOUNINNHI, T_PDSPKIHONNINF.SYOUNINNHI AS
PDSP_SYOUNINNHI, OYAPJ_INFO.OYAPJ_KANNRYOUHI, OYAPJ_STOP_INFO.OYAPJ_STOPFLAG,PROJECTS_INFO.EVALUATE_STATUS  
from  ((((((PROJECTS_INFO LEFT JOIN [SELECT PROJECTS_INFO.PROJECT_NO, EMPLOYEES_INFO.EMPLOYEE_NAME AS TL_NAME FROM PROJECTS_INFO,
EMPLOYEES_INFO WHERE PROJECTS_INFO.PROJECT_TL = EMPLOYEES_INFO.EMPLOYEE_NO ]. AS TLS ON PROJECTS_INFO.PROJECT_NO = TLS.PROJECT_NO) LEFT
JOIN [SELECT PROJECTS_INFO.PROJECT_NO, EMPLOYEES_INFO.EMPLOYEE_NAME AS PL_NAME FROM PROJECTS_INFO, EMPLOYEES_INFO WHERE
PROJECTS_INFO.PROJECT_PL = EMPLOYEES_INFO.EMPLOYEE_NO ]. AS PLS ON PROJECTS_INFO.PROJECT_NO = PLS.PROJECT_NO) LEFT JOIN
[SELECT PROJECTS_INFO.PROJECT_NO, EMPLOYEES_INFO.EMPLOYEE_NAME AS QA_NAME FROM PROJECTS_INFO, EMPLOYEES_INFO
WHERE PROJECTS_INFO.QATANNTOU = EMPLOYEES_INFO.EMPLOYEE_NO ].  AS QAS ON PROJECTS_INFO.PROJECT_NO = QAS.PROJECT_NO ) LEFT
JOIN T_PJKIHONNKEIKAKU ON PROJECTS_INFO.PROJECT_NO = T_PJKIHONNKEIKAKU.PJNO) LEFT JOIN [SELECT PROJECTS_INFO.PROJECT_NO ,
T_PJKIHONNKEIKAKU.KANNRYOUHOUKOKUHI AS OYAPJ_KANNRYOUHI FROM PROJECTS_INFO, T_PJKIHONNKEIKAKU
WHERE PROJECTS_INFO.OYAPJNO = T_PJKIHONNKEIKAKU.PJNO ]. AS OYAPJ_INFO ON PROJECTS_INFO.PROJECT_NO = OYAPJ_INFO.PROJECT_NO )
LEFT JOIN [SELECT PROJECTS_INFO.PROJECT_NO , PROJECTS_INFO.STOPFLAG AS OYAPJ_STOPFLAG FROM PROJECTS_INFO]. AS OYAPJ_STOP_INFO
ON PROJECTS_INFO.OYAPJNO = OYAPJ_STOP_INFO.PROJECT_NO)  LEFT JOIN T_PDSPKIHONNINF ON PROJECTS_INFO.PROJECT_NO = T_PDSPKIHONNINF.PJNO  
where (PROJECTS_INFO.DELETEF =False)   AND ( PROJECTS_INFO.PROJECT_NO  not in  (select top  280 PROJECTS_INFO.PROJECT_NO  
from  ((((((PROJECTS_INFO LEFT JOIN [SELECT PROJECTS_INFO.PROJECT_NO, EMPLOYEES_INFO.EMPLOYEE_NAME AS TL_NAME FROM PROJECTS_INFO,
EMPLOYEES_INFO WHERE PROJECTS_INFO.PROJECT_TL = EMPLOYEES_INFO.EMPLOYEE_NO ]. AS TLS ON PROJECTS_INFO.PROJECT_NO = TLS.PROJECT_NO) LEFT
JOIN [SELECT PROJECTS_INFO.PROJECT_NO, EMPLOYEES_INFO.EMPLOYEE_NAME AS PL_NAME FROM PROJECTS_INFO, EMPLOYEES_INFO
WHERE PROJECTS_INFO.PROJECT_PL = EMPLOYEES_INFO.EMPLOYEE_NO ]. AS PLS ON PROJECTS_INFO.PROJECT_NO = PLS.PROJECT_NO) LEFT
JOIN [SELECT PROJECTS_INFO.PROJECT_NO, EMPLOYEES_INFO.EMPLOYEE_NAME AS QA_NAME FROM PROJECTS_INFO, EMPLOYEES_INFO
WHERE PROJECTS_INFO.QATANNTOU = EMPLOYEES_INFO.EMPLOYEE_NO ].  AS QAS ON PROJECTS_INFO.PROJECT_NO = QAS.PROJECT_NO ) LEFT
JOIN T_PJKIHONNKEIKAKU ON PROJECTS_INFO.PROJECT_NO = T_PJKIHONNKEIKAKU.PJNO) LEFT JOIN [SELECT PROJECTS_INFO.PROJECT_NO ,
T_PJKIHONNKEIKAKU.KANNRYOUHOUKOKUHI AS OYAPJ_KANNRYOUHI FROM PROJECTS_INFO, T_PJKIHONNKEIKAKU WHERE PROJECTS_INFO.OYAPJNO =
T_PJKIHONNKEIKAKU.PJNO ]. AS OYAPJ_INFO ON PROJECTS_INFO.PROJECT_NO = OYAPJ_INFO.PROJECT_NO ) LEFT JOIN [SELECT PROJECTS_INFO.PROJECT_NO ,
PROJECTS_INFO.STOPFLAG AS OYAPJ_STOPFLAG FROM PROJECTS_INFO]. AS OYAPJ_STOP_INFO ON PROJECTS_INFO.OYAPJNO = OYAPJ_STOP_INFO.PROJECT_NO)  
LEFT JOIN T_PDSPKIHONNINF ON PROJECTS_INFO.PROJECT_NO = T_PDSPKIHONNINF.PJNO  
where (PROJECTS_INFO.DELETEF =False)   ORDER BY   PROJECTS_INFO.PROJECT_NO DESC  ) )
  ORDER BY   PROJECTS_INFO.PROJECT_NO DESC

论坛徽章:
0
2 [报告]
发表于 2007-08-08 13:25 |只看该作者
晕..这么长的SQL语句...你写的MSSQL方式吧..都有top 10  

要是相关表中有容量很大的话,最好采用temporary方式实现了..


若真是MSSQL可以考虑使用这样方式
declare @table table (IDH int not null identity(1,1) ........)
但是一定要在一个会话中,否则就失去效果了..同时建议你把内存先调大点..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP