Sql server Sql server空间索引存储过程性能优化
您好,我正在对我的一个存储过程进行性能调整,该存储过程包含update语句:Sql server Sql server空间索引存储过程性能优化,sql-server,Sql Server,您好,我正在对我的一个存储过程进行性能调整,该存储过程包含update语句: UPDATE e SET LNG_PROP = GEOGRAPHY::STPointFromText(A.geom.STPointN(A.geom.STNumPoints()/2).ToString(), 4326).Long ,LAT_PROP = GEOGRAPHY::STPointFromText(A.geom.STPointN(A.geom.ST
UPDATE e
SET
LNG_PROP = GEOGRAPHY::STPointFromText(A.geom.STPointN(A.geom.STNumPoints()/2).ToString(), 4326).Long
,LAT_PROP = GEOGRAPHY::STPointFromText(A.geom.STPointN(A.geom.STNumPoints()/2).ToString(), 4326).Lat
FROM
Exports.SpatialKey_MTG22 e
INNER JOIN dbo.Addresses A WITH (NOLOCK) ON A.FullName = e.ADDR_STREET_PROP AND ((e.ADDR_NUMBER_PROP BETWEEN LFROMHN AND LTOHN OR e.ADDR_NUMBER_PROP BETWEEN RFROMHN AND RTOHN) OR (e.ADDR_NUMBER_PROP BETWEEN LTOHN AND LFROMHN OR e.ADDR_NUMBER_PROP BETWEEN RTOHN AND RFROMHN))
INNER JOIN dbo.ZipCodes Z WITH (NOLOCK) ON Z.ZipCode = A.ZipL OR Z.ZipCode = A.ZipR AND (Z.ZipCode = e.IC_PROP_ZIP OR (Z.State = e.IC_PROP_STATE AND Z.City = e.IC_PROP_CITY))
我试图修改:
Select e.SpatialKey_MTG22_ID,e.AC_ACCOUNT_NAME,e.IC_PROP_ADDR_1,e.ADDR_NUMBER_PROP,e.ADDR_STREET_PROP,e.IC_PROP_CITY,e.IC_PROP_STATE,e.IC_PROP_ZIP
,[LNG_PROP] = GEOGRAPHY::STPointFromText(e.geom.STPointN(e.geom.STNumPoints()/2).ToString(), 4326).Long
,[LAT_PROP] = GEOGRAPHY::STPointFromText(e.geom.STPointN(e.geom.STNumPoints()/2).ToString(), 4326).Lat
FROM
(
SELECT e.*,A.geom,A.ZIPL,A.ZIPR
FROM
Exports.SpatialKey_MTG22 e
INNER JOIN dbo.Addresses A WITH (NOLOCK)
ON A.FullName = e.ADDR_STREET_PROP
WHERE
((e.ADDR_NUMBER_PROP BETWEEN LFROMHN AND LTOHN OR e.ADDR_NUMBER_PROP BETWEEN RFROMHN AND RTOHN)
OR (e.ADDR_NUMBER_PROP BETWEEN LTOHN AND LFROMHN OR e.ADDR_NUMBER_PROP BETWEEN RTOHN AND RFROMHN))
) e
INNER JOIN dbo.ZipCodes Z WITH (NOLOCK)
ON (Z.ZipCode = e.ZipL OR Z.ZipCode = e.ZipR)
AND (Z.ZipCode = e.IC_PROP_ZIP OR (Z.State = e.IC_PROP_STATE AND Z.City = e.IC_PROP_CITY))
我在地址表中有2600万条记录
它仍然需要1个多小时才能运行。
任何人都可以帮助我进行哪些更改以提高性能。请用您的标签(删除标签)说明您使用的是SQL Server还是MySQL Server。SQL Server和MySQL是不同的产品。MySQL不引用您的SQL,SQL Server并不意味着恰好在服务器上运行的SQL。您知道表中有哪些索引吗?您是否试图一次更新2600万行?对于事务日志来说,这需要处理很多事情。你能批量更新吗?这本身可能会有所帮助。