SQL表设计用于以下方案

时间:2011-05-17 18:07:27

标签: mysql database ruby-on-rails-3

我正在使用MySQL,我遇到以下情况:

Table nodes: node_id, lat, lng, name
Table links: node1, node2, name

因此,有两个表,在表节点中,它存储所有点及其各自的纬度和经度,并在表链接中,其中存储节点1引用节点,而node2也引用节点。

因为在MySQL和Rails中我们实际上没有2个外键指向同一个表(如果我错了就纠正我),例如,如果我想找到起始node_name和结束node_name,我将如何构建我的SQL语句?我试过了

SELECT nodes.name from Nodes, links WHERE nodes.node_id = node1哪种工作但速度很慢(每个表中的记录少于10k),如果我想找到起始节点和结束节点的两个名称,我怎么能过去做呢?或者,如果我想用lat>限制起始节点x和结束节点lat<你找到所有的链接?

谢谢。

此致 安迪。

1 个答案:

答案 0 :(得分:1)

是的,你可以这样做。你的桌子结构看起来不错。

你的查询也很好。尝试确保node_id上​​有适当的索引以帮助提高性能。

你可以运行2个查询,每个名称一个,或者如果你想让结果都在同一个查询中,你可以做两个子查询。