Поиск дубликатов большой геопространственной базы данных - PullRequest
0 голосов
/ 27 ноября 2011

Я работаю с таблицей maxmind geocities ( см. Здесь ), в MySQL (Windows).

Эта таблица содержит более 2,7 миллионов строк (что довольно много).

Я пытаюсь найти дубликаты городов (чтобы найти разные варианты написания для каждого города, такие как pekin (fr), пекин ...) по их долготе и широте.

Даже если я использую левое внешнее объединение, подзапрос или сложный оператор where, но время ответа слишком велико (оно никогда не заканчивается).

Вот моя последняя попытка:

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

Есть ли у кого-нибудь идея?

1 Ответ

1 голос
/ 27 ноября 2011

Вы можете ускорить свой запрос, не выбирая * (я думаю, достаточно 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...