>我在这里遇到执行时间问题,真的很沮丧
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 秒
我会更简单地写成:
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)
上建立索引。