当前位置: 代码迷 >> Sql Server >> 语句的优化。
  详细解决方案

语句的优化。

热度:32   发布时间:2016-04-27 13:48:21.0
求一个语句的优化。。
SQL code
--版本是SQL2000--数据量都不大,几万条,但是执行非常慢,要几分钟。。--怎么优化呢UPDATE T_BASE_PARTSALF SET CURRSALF = T1.SAFENUM,                        UPDATETIME=ISNULL(CONVERT(DATETIME,T1.UPDATETIME),GETDATE()),                        UPDATEMAN='SYSMAN'              FROM (SELECT IOSF.SAFENUM,IOSF.UPDATETIME,PART.PARTID,FACT.FACTID FROM T_IO_SAFESTORAGE IOSFLEFT JOIN T_BASE_PART PART ON IOSF.PARTCODEU8=PART.PARTCODELEFT JOIN T_BASE_FACT FACT ON IOSF.FACTCODE=FACT.FACTCODEWHERE ISACTIVE=1) AS T1                        WHERE T_BASE_PARTSALF.PARTID = T1.PARTID AND T_BASE_PARTSALF.FACTID=T1.FACTID 


------解决方案--------------------
SQL code
;WITH TAS(SELECT IOSF.SAFENUM,IOSF.UPDATETIME,PART.PARTID,FACT.FACTID FROM T_IO_SAFESTORAGE IOSFLEFT JOIN T_BASE_PART PART ON IOSF.PARTCODEU8=PART.PARTCODELEFT JOIN T_BASE_FACT FACT ON IOSF.FACTCODE=FACT.FACTCODEWHERE ISACTIVE=1)UPDATE T_BASE_PARTSALF SET CURRSALF = T.SAFENUM,                        UPDATETIME=ISNULL(CONVERT(DATETIME,T1.UPDATETIME),GETDATE()),                        UPDATEMAN='SYSMAN'              FROM T WHERE T_BASE_PARTSALF.PARTID = T1.PARTID AND T_BASE_PARTSALF.FACTID=T1.FACTID这样试试,还有where后面的字段加索引
  相关解决方案