2014-11-18 1 views
1

latitudelongitude 좌표 (모두 데이터 유형이 decimal)를 저장하는 열을 포함하는 데이터베이스 테이블이 있습니다. 검색을 통해 표에 약 500,000 개의 행이 있습니다.Geokit-rails + MySQL : 위도와 경도를 통한 검색 속도를 높이려면 어떻게해야합니까?

반경이 100-200 마일 인 행을 검색하면 검색이 약 140 초 동안 지속되므로 프로덕션을 수행 할 수 없습니다.

스택 :

  1. 레일 4

내가 지리적 데이터를 통해 검색 속도를하는 방법에 대한 도움을 요청하고 싶습니다 MySQL의 5.5

  • Geokit-rails gem. kayak.com과 유사한 검색을 구현해야합니까? 사용자에게 결과가 표시되고 검색이 백그라운드에서 계속 실행되고 있습니까?

    미리 감사드립니다.

    편집 : '저장'계획

    create_table "stores", force: true do |t| 
        t.string "store_name" 
        t.string "address" 
        t.string "city" 
        t.string "state" 
        t.string "county" 
        t.string "zip_code" 
        t.decimal "latitude",     precision: 10, scale: 6 
        t.decimal "longitude",     precision: 10, scale: 6 
        end 
    

    테이블에는 인덱스가 없습니다. 나는 latitudelongitude 컬럼을 가진 유사한 테이블을 데이터베이스에 가지고 있는데 인덱스를 추가하려고 시도했지만 검색로드 시간은 동일하게 유지되었습니다.

  • +0

    해당 테이블에 대한 데이터베이스 스키마를 게시 할 수 있습니까? 해당 테이블에 대한 인덱스가 있습니까? – spickermann

    +0

    당신의 코멘트 'spickermann'을 가져 주셔서 감사합니다. OP에 테이블 구성표를 추가했습니다. – user984621

    +0

    이것을 확인하십시오 https://github.com/alexreisner/geocoder#advanced-querying – apneadiving

    답변

    0

    가장 좋은 방법은 지형 공간 인덱스를 사용하는 것입니다. 그러나 geokit이나 geocoder도 관계형 데이터베이스를 지원하지 않습니다. rgeo 보석입니다. 그러나 잘 설명되어 있지 않습니다. 일부 serios 검색 작업을 수행하는 경우이 문제를 elastic_search에 위임하는 것이 좋습니다.

    +0

    답변 해 주셔서 감사합니다. '드레 -hh'. 'elastic_search' 가까이를 살펴 보겠습니다. 지리 공간 색인에 대해 말하면서, 저는 이것을 https://github.com/rgeo/activerecord-mysqlspatial-adapter-gem에서 찾았습니다. 오래된 보석이기 때문에 놀만한 가치가 있는지 궁금합니다. – user984621

    +0

    저는 실제로 관계형 데이터베이스로이 문제를 해결하는 사람을 알지 못합니다. mongo 또는 elastic_search를 사용하여이 문제를 해결하는 사람들 만 들으십시오. –

    1

    나는 같은 위도와 경도 열을 결합 인덱스를 넣어 시작합니다 : @spickermann 대답이 작동하지 않을 경우, IMO는 포스트 그레스로 마이그레이션해야

    class AddIndexToStoresLongitudeLatitude < ActiveRecord::Migration 
        def up 
        add_index :stores, [:latitude, :longitude] 
        end 
    
        def down 
        remove_index :stores, [:latitude, :longitude] 
        end 
    end 
    
    +0

    한번 시도해 보겠습니다. – user984621

    0

    . PostGis는 뛰어난 성능을 발휘하는 매우 강력한 도구입니다. http://postgis.net/

    관련 문제