米国内のすべての郵便番号を含むテーブルがあり、クエリで郵便番号の境界座標と各郵便番号の離れた数を選択しています。特定の郵便番号を指定すると、この操作はかなり高速になります。問題は、IN 演算子を追加して、特定の半径内のすべての郵便番号を取得できるようにすることです。これを行うには、ここに示されている大円関数http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=81360を使用しました。私が今思う問題は、大円関数から返されるすべての郵便番号に対して操作全体が実行されていることです。最終結果はGoogleマップ用ですが、SQLクエリの改善には関係ありません。パフォーマンスを改善するには、このクエリをどのように変更する必要がありますか? 私はすでに郵便番号のインデックスを作成しています。どんな助けでも大歓迎です!
select s.ZipCode, count(a.[Apartment_Complex]) apartCount, b.Longitude, b.Latitude from ZipCodeServiceAvailability s
left join pdx_apart_view a on s.ZipCode = left([Zip Code], 5)
left join ZipCodeBoundaries b on s.ZipCode = b.ZipCode
Where Ordering % 10 = 0 and s.zipcode in
(Select zipcode from ZipCodeServiceAvailability
Where AzumaWebInput.dbo.F_GREAT_CIRCLE_DISTANCE
((Select Latitude from ZipCodeServiceAvailability where ZipCode = '78745'), --latitude
(Select Longitude from ZipCodeServiceAvailability where ZipCode = '78745'), --longitude
Latitude,
Longitude) < 200) -- get all zips within 200 miles of 78745
Group By s.ZipCode, IsServiced, b.Longitude, b.Latitude, b.Ordering
Order by s.ZipCode, b.Ordering