【发布时间】:2014-10-26 13:28:15
【问题描述】:
问题:找到最近的供应我正在寻找的饮料的酒吧。
这里可以找到生成的MySQL代码http://pastebin.com/5Uc2ewUW
与这个问题交互的API Request会有这些参数
query, String, ideally the drink name
lng, double, the starting longitude
lat, double, the starting latitude
range, integer, max distance in meters (with a default value)
查询参数可能选择不止一种饮料(考虑搜索“伏特加”)。
编写具有良好性能的 SQL 查询的好策略是什么?
我不是很专业,但我的想法是
- 选择范围内的条形
- 从饮料__bars 中选择,其中 bar_id 在上一个选择结果中
- 加入饮料表以获取饮料数据
如何根据距离设置顺序?
欢迎提出任何建议!
编辑:感谢您到目前为止的回答,但他们主要关注计算距离并且已涵盖。 我不知道如何根据我与酒吧的距离来订购结果(即饮料)。
像这样的元查询
SELECT drink.id, drink.name
FROM $DATA_POOL
WHERE drink.name LIKE '%MY_QUERY%'
ORDER BY $ORDER
在哪里
-
$DATA_POOL= 饮料子集,是我附近酒吧的服务员(我已经可以计算出我附近的酒吧) -
$ORDER= 我与酒吧的距离,基于 API 参数lng和lat
【问题讨论】:
-
谢谢@Bulat 我已经更新了问题!
-
@TheChaos 回答对你有用吗?
标签: mysql sql query-optimization geospatial spatial-index