SQL 执行时间



>我在这里遇到执行时间问题,真的很沮丧

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 表类型的一列:tinyintselect count(*) from OT where AAA=6约150000

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

我会更简单地写成:

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)上建立索引。

最新更新