gpt4 book ai didi

sql - mySQL中的地理位置:将大型数组放置在哪里,如何正确执行?

转载 作者:行者123 更新时间:2023-12-03 02:07:20 25 4
gpt4 key购买 nike

friend 们,美好的一天!

抱歉,如果我写的太复杂了……谢谢您的帮助。

我有一个事件(有一些选择),它在一个位置开始,在另一个位置(另一个城市)结束。

数据库:mySQL

结构体:

  • 位置: id,地址,经纬度,Lng
  • 事件: id,标题,start_loc_id,end_loc_id,其他一些选项(例如评分)。

  • events.start_loc_id,events.end_loc_id-location.id的外键

    位置来自: https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql

    所以出现了问题:

    需要使用(例如)搜索事件
  • 起始位置周围半径100公里
  • 终点位置附近80公里
  • 评分> 10

  • 因此,要环顾我使用的位置: https://gist.github.com/goosechaser/07dbf28818cedc1c9bb5

    (顺便说一句:PHP framewok:Laravel)

    现在如何:
  • 我们找到了24个启动
  • 的位置
  • 我们找到了
  • 结尾的33个位置

    然后将“WHERE IN”数组放置到事件的开始和结束位置。

    Laravel代码:
    $Events = Events::whereIn(
    'start_loc_id',
    Location::distance(
    Input::get('start_location_lat'),
    Input::get('start_location_lng'),
    Input::get('start_location_radius'),
    "km")
    ->orderBy("distance")->lists('id'))
    ->whereIn(
    'end_loc_id',
    Location::distance(
    Input::get('end_location_lat'),
    Input::get('end_location_lng'),
    Input::get('end_location_radius'),
    "km")
    ->orderBy("distance")->lists('id'))
    ->get();

    那么,如果我们找到1000个地点怎么办?显然会工作太慢。
  • 用php / mysql做的更好的方法是什么?
  • 临时表?
  • 切换到elasticsearch吗?
  • 将start_location_lat,start_location_lng和end_location_lat,end_location_lng添加到事件表?

  • 感谢您的帮助!

    最佳答案

    我建议使用像MongoDB的地理空间命令http://docs.mongodb.org/manual/reference/command/nav-geospatial/这样的索引方法,我认为elasticsearch也可以做到http://www.elasticsearch.org/blog/geo-location-and-search/

    关于sql - mySQL中的地理位置:将大型数组放置在哪里,如何正确执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24207689/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com