2011-11-27 82 views
0

我正在使用MySQL(Windows)中的maxmind geocities表(see here)。搜索重複的大型地理空間數據庫

這張表有超過270萬行(非常大)。

我試圖找到城市重複(爲了找到像北京(北京),北京每個城市不同的拼寫...)跟隨它們的經度和緯度。

即使我使用左外連接,子請求或複合where子句,但響應時間過長(它永遠不會結束)。

這是我最後一次嘗試:

select * 
from cities c1, cities c2 
where c2.longitude=c1.longitude 
and c2.latitude=c1.latitude 
and c2.cities!=c1.cities 

有誰有一個想法。

回答

1

您可以通過不選擇*(我認爲cities已足夠)並在cities(longtitude,latitude)甚至cities(longtitude,latitude, cities)上添加索引來加快查詢速度。您也可以嘗試

SELECT longitude,latitude, COUNT(DISTINCT c.cities) as num_dup 
FROM cities c 
GROUP BY longitude,latitude 
HAVING num_dup > 1 
+0

謝謝您的快速答覆, – Laslo

+0

謝謝您的快速答覆,但它的工作原理有點快,但還不夠,我(190S)。此外,我會因此得到同一城市的不同拼寫(具有相同的經度和緯度)。 – Laslo

+0

你嘗試添加索引嗎? – a1ex07