作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据库表,其中包含存储 latitude
和 longitude
坐标的列(两者都具有 decimal
数据类型)。通过搜索,该表有大约 50 万行。
问题是,如果我搜索半径为 100-200 英里的行,搜索将持续大约 140 秒,这不可能投入生产。
堆栈:
我想向您寻求帮助,了解如何通过地理数据加快搜索速度。我应该执行类似于 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
表上没有索引。我在数据库中有一个类似的表,它也有 latitude
和 longitude
列,我试图在它们上添加索引,但搜索的加载时间保持不变。
最佳答案
我会首先在经度和纬度列上放置一个组合索引,如下所示:
class AddIndexToStoresLongitudeLatitude < ActiveRecord::Migration
def up
add_index :stores, [:latitude, :longitude]
end
def down
remove_index :stores, [:latitude, :longitude]
end
end
关于mysql - Geokit-rails + MySQL : How to speed up search through latitude and longitude?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26991840/
我是一名优秀的程序员,十分优秀!