Sql 使用相似的比较优化存储过程
我有这个问题。我可以看到Sql 使用相似的比较优化存储过程,sql,stored-procedures,Sql,Stored Procedures,我有这个问题。我可以看到的一些问题,比如 你们能看看这个查询并帮我优化一下吗?我真的很感谢你在这里抽出时间支持我 UPDATE F_State SET StateName = L.State_Name FROM Reg.Location L JOIN F_State S ON CONVERT(nvarchar, L.stateID) = s.StateCode --BECAUSE THIS IS NVARCHAR and ststeid isnt WHERE S.Stat
的一些问题,比如
你们能看看这个查询并帮我优化一下吗?我真的很感谢你在这里抽出时间支持我
UPDATE F_State
SET StateName = L.State_Name
FROM Reg.Location L
JOIN F_State S ON CONVERT(nvarchar, L.stateID) = s.StateCode --BECAUSE THIS IS NVARCHAR and ststeid isnt
WHERE S.StateName LIKE '%)%'
AND L.ZIPCODE = S.ZIPCODE
AND L.CITY=S.CITY
我有大约300000行需要更新…这根本没有帮助。你们能帮我解决吗?再次感谢你们 如果您在oracle上,您可以将基于函数的索引与INSTR一起使用(INSTR类似“%”),这将解决您的问题
但在您的情况下,例如“…%”问题与此无关
您正在对整个表进行更新,这真的有必要吗
你真的要再次加入联邦政府吗李>
您在StateCode上有索引(或唯一约束),在ZipCode上有索引吗
我看不出来,您在做什么,但我想您是在尝试设置F_State.StateName,因为它包含位置为“%”的Location.State_name。在F_州(wtf,真的吗?一个是非原始ID,一个是varchar…但okey)和同一个ZipCode和同一个城市中,发现合适的位置的stateID与StateCode相同
UPDATE F_State S
SET S.StateName = (SELECT State_Name
FROM Reg.Location L
WHERE CONVERT(nvarchar, L.stateID) = s.StateCode
AND L.ZipCode = S.ZipCode
AND L.City = S.City
LIMIT 1)
WHERE S.StateName LIKE '%)%';
使用“%”之类的
基本上会阻止SQL Server使用任何索引。如果你真的需要这个-在运行时你没有什么可以做的-你只需要耐心…@marc_s…嘿,现在快半个小时了,还在运行…?再次感谢各位。。