수천 개의 행이있는 테이블이있는 데이터베이스가있는 SQL Server 2008R2가 있습니다. 난 서버가 빠른이 쿼리를 실행 시작하면이 쿼리를 실행하기가 매우 느려질 몇 분 후SQL Server 2008 R2는 시작부터 몇 분 후에 느려집니다.
SELECT idEvent, geography::STGeomFromText('POINT(' + @userLongitude + ' ' + @userLatitude + ')', 4326).STDistance([Coordinates]) as distance
FROM EventCoords
INNER JOIN Event ON EventCoords.idEvent = Event.id
WHERE DAY(start_time)=DAY(@timeMax) AND MONTH(start_time)=MONTH(@timeMax)AND
YEAR(start_time)=YEAR(@timeMax) and
geography::STGeomFromText('POINT(' + @userLongitude + ' ' + @userLatitude + ')', 4326).STDistance([Coordinates]) < @maxDistance
: getEventsByRange이 기능입니다
exec sp_executesql N'SELECT *, [t0].[distance] AS [Meters], @p4 AS [ToWhat]
FROM [dbo].[getEventsByRange](@p0, @p1, @p2, @p3) AS [t0]
LEFT JOIN [dbo].[Event] AS [t1] ON [t0].[idEvent] = [t1].[id]
ORDER BY [t0].[distance]',N'@p0 var
. 문제가 어디에 있습니까? 왜 서버가 캐시 된 쿼리를 빠르게하지 않았습니까?
옵션 (RECOMPILE) – buckley