- 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后面的字段加索引