【问题标题】:Search for duplicates large geospatial database搜索重复的大型地理空间数据库
【发布时间】:2012-01-07 08:45:00
【问题描述】:

我正在使用 MySQL (Windows) 中的 maxmind geocities 表 (see here)。

这个表有超过 270 万行(非常大)。

我正在尝试按照经度和纬度查找城市重复项(以便为每个城市(例如 pekin (fr)、beijing...)找到不同的拼写方式)。

即使我使用左外连接、子请求或复杂的 where 子句,但响应时间太长(它永远不会结束)。

这是我最后一次尝试:

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

有没有人有想法。

【问题讨论】:

    标签: mysql duplicates large-data-volumes


    【解决方案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
    

    【讨论】:

    • 感谢您的快速回答,
    • 感谢您的快速回答,但它的工作速度更快,但对我来说还不够(190 年代)。此外,我会因此得到同一个城市的不同咒语(具有相同的经度和经度)。
    • 您好,无法创建索引,耗时10多分钟,连接丢失。这是我的尝试:在城市(纬度,经度)上创建索引 longitude_latitude;其实300万行也不算多,那怎么了……
    • 创建索引需要一些时间,但 10 分钟似乎太多了。我希望您在其他进程执行 DML 操作时不要创建索引...
    • 一点也不,当我执行索引查询时,这是唯一访问我的数据库并在计算机上处​​理的。有什么想法吗?
    猜你喜欢
    • 2017-01-10
    • 2012-07-20
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多