0

我有一个基于事件和分支的应用程序。我有两个事件,一个有分支,一个没有。

事件和分支都有纬度和经度。

一个事件可以有多个分支。我想按与另一个地理坐标的距离对这些事件进行排序。

对于有分支的事件,它应该使用其分支的位置来计算它有多接近,而对于没有它的事件,它应该使用事件本身的位置。

这可以在 MySQL 中进行而不影响性能吗?还是我使用了错误类型的数据库?我是否应该使用另一个带有脚本的 NOSQL 数据库将当前的 MySQL 和 Pods 数据导出到它。

这是我在这个框架中使用 ATM 的基本查询,它添加了一点糖(显然这在普通的 MySQL 中不起作用),没有分支的事件似乎没有以正确的顺序出现。

SELECT 
  t.*, 
  DISTANCE(\"$latitude\", \"$longitude\", 
           IF(t.branches.latitude, t.branches.latitude, t.latitude),     
           IF(t.branches.longitude, t.branches.longitude, t.longitude)
  ) as distance 
FROM table as t 
ORDER BY distance.
4

1 回答 1

2

如果实体之间存在任何类型的关系,您希望 SQL 减少管理这些关系的开销。(业务逻辑,选择名称 where event = something)

如果您想使用数据库进行普通存储,并在服务器端语言(php、ruby、c# 等)上完成所有业务逻辑和关系管理,那么 NOSQL 会更好。

于 2013-08-06T16:11:36.087 回答