1
我有table1
和table2
。SQL Server - 兩個查詢的交集,都使用WHERE子句
table1 contains ZipCode (varchar(12)), GeogCol1 (Geography)-spatial index
table2 contains ZipCode (varchar(12)), Product (varchar(12))
我需要從提供Zipcode ('90266')
用戶即假定是包含兩個表中的某一半徑內歸還所有Product's
,從Zipcode
每個顯示distance
返回Product
並給用戶排序或的選擇將Products
由distance
反向排序至提供的Zipcode
。
查詢1 - 這是我的半徑距離查詢:
SELECT h.*
FROM table1 g
JOIN table1 h on g.Zipcode <> h.Zipcode AND g.Zipcode = '90266' AND h.Zipcode <> '90266'
WHERE g.GeogCol1.STDistance(h.GeogCol1)<=(10 * 1609.344)
ORDER BY g.GeogCol1.STDistance(h.GeogCol1)
查詢2 - 這是我的產品查詢:
SELECT *
FROM table2
WHERE (Active = 1) AND (ProductName LIKE '%54%')
而且,豈不是更好,如果我一起把GeogCol1
空間索引中table2
與每個產品的其他信息,以便查詢可以完成對單個表?
我認爲這仍然存在問題:什麼是正確的索引或指數集以確保此查詢速度快? –