In my limited ability I cobbled together the following stored procedure.Thanks to member ehorn for posting the zip code radius formula. SP is returning the results desired, problem is the speed. According to the execution plan about 64% of the cost is spent on the "SELECT Zip , City, MileRadius" query with about 49% of that on the filter. Where should my efforts be focused on for speeding it up? Thanks!Alter PROC [dbo].[TS_zip_radi_Job] @Zip char(5) , @Radius intASSET NOCOUNT ONDECLARE @lat1 float, @long1 floatSELECT @lat1= lat, @long1 = lon FROM TSPlacesWHERE Zip = @ZipSELECT Zip , City, MileRadiusINTO #tempFROM( SELECT Zip, City,3958.75 * ( Atan(Sqrt(1 - Power(((Sin(@Lat1/57.2958) * Sin(lat/57.2958)) + (Cos(@Lat1/57.2958) * Cos(lat/57.2958) * Cos((lon/57.2958) - (@Long1/57.2958)))), 2)) / ((Sin(@Lat1/57.2958) * Sin(lat/57.2958)) + (Cos(@Lat1/57.2958) * Cos(lat/57.2958) * Cos((lon/57.2958) - (@Long1/57.2958)))))) MileRadius FROM TSPlaces) aWHERE a.MileRadius >= 0 AND a.MileRadius <= @RadiusORDER BY MileRadiusSELECT dbo.TSJobPostDetail.JobTitle, dbo.TSJobPostDetail.PostingSummary1, dbo.TSJobPostDetail.PostingSummary2, dbo.TSJobPostDetail.Description, dbo.TSLocationDetail.LocationNameFROM dbo.TSLocationDetail INNER JOIN dbo.TSActivePosts ON dbo.TSLocationDetail.TSLocationID = dbo.TSActivePosts.TSLocationID INNER JOIN #temp ON dbo.TSLocationDetail.Zip = #temp.zip INNER JOIN dbo.TSJobPostDetail ON dbo.TSActivePosts.TSJobPostingID = dbo.TSJobPostDetail.TSJobPostingIDWHERE (dbo.TSJobPostDetail.ActiveFlag = '1')DROP TABLE #temp