SQL执行时间

时间:2018-05-19 17:05:26

标签: sql sql-server time execution

我在这里面临执行时间问题,真的很难过

UPDATE [OT] 
SET AAA = 8 
WHERE ID in 
(
select UID from [IP] B 
inner join [OT] A 
on B.ADDR = A.ADDR and A.ID=B.ID
)  
AND AAA= 6  ;

OT表有重复ID,count(*)约900000行 IP表具有唯一ID,count(*)约800000行

AAA是OT表类型的列:tinyint select count(*) from OT where AAA=6约150000

我不知道为什么这个查询需要1个多小时? 我的其他类似查询只需要10秒

1 个答案:

答案 0 :(得分:0)

我会更简单地写这个:

UPDATE OT
    SET AAA = 8 
    FROM OT
    WHERE EXISTS (SELECT 1 FROM IP WHERE IP.ADDR = OT.ADDR AND IP.ID = OT.ID) AND
          OT.AAA = 6  ;

为了提高性能,您需要OT(AAA)IP(ADDR, ID)上的索引。