Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Combining a query and a function
Message
 
 
To
13/04/2010 17:35:05
General information
Forum:
Microsoft SQL Server
Category:
Other
Environment versions
SQL Server:
SQL Server 2008
Application:
Web
Miscellaneous
Thread ID:
01460047
Message ID:
01460073
Views:
32
>>Try
>>
>>create table test (Latitude decimal(30,10), Longitude decimal (30,10))
>>
>>declare @CenterLat float=47.7795
>>declare @CenterLon float=-65.7191
>>declare @SearchDistance float=250
>>
>> select * from (select * from test T
>> cross apply (select SIN(@CenterLat/57.2957795130823) * SIN(Latitude/57.2957795130823) + 
>> COS(@CenterLat/57.2957795130823) * COS(Latitude/57.2957795130823) * 
>> COS(Longitude/57.2957795130823 -@CenterLon/57.2957795130823) as Temp) Temp
>>  where (latitude>=@CenterLat - @SearchDistance/111.0 and latitude<=@CenterLat + @SearchDistance/111.0) and
>> (longitude>=@CenterLon - @SearchDistance/111.0 and longitude<=@CenterLon + @SearchDistance/111.0)) X
>> where  3958.75586574 * ACOS(case when Temp > 1 then 1 when Temp < -1 then -1 else Temp end) <=@SearchDistance
>
>This is good code. I also tested it against the main table with close to 2000 records and the related records were returned as is.
>
>Thanks

Can you also test this performance wise using original function approach and using new CROSS APPLY approach and also using Borislav's code?

Just curious for performance.
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform