私のデータベース内のある点にかなり近いエントリをすべて返す必要があります。私は(WHEREセクションで)これをやっている現時点では:私のデータベースは多数のレコードを持っており、平方根を計算することは遅いようクエリ内の単純な関数
OR (
(Addresses.Latitude IS NOT NULL)
AND (Addresses.Longitude IS NOT NULL)
AND (Abs(Addresses.Latitude - @SearchInLat) < 0.5)
AND (Abs(Addresses.Longitude - @SearchInLng) < 0.5)
)
私はマンハッタン距離ではなく、デカルト距離をしています。
私はSQLデータベースにはまったく新しいですが、SELECT procuduresの中に機能を持たせることは効率が悪いと考えられています。これは、絶対値をとるなどの単純な関数にも適用されますか?次のようなものです:
OR (
(Addresses.Latitude IS NOT NULL)
AND (Addresses.Longitude IS NOT NULL)
AND ((Addresses.Latitude - @SearchInLat) < 0.5)
AND ((Addresses.Latitude - @SearchInLat) > -0.5)
AND ((Addresses.Longitude - @SearchInLng) < 0.5)
AND ((Addresses.Longitude - @SearchInLng) > -0.5)
)
もっと良い解決策はありますか?
私はあなたが2番目の例でABSを削除するつもりであると思うと思います。 –
私は、ありがとう。私は常にそれらを提出する前に物事を2回読むが、しかし、常に何かを見逃しているようだ! – Oliver