Дизайн таблицы SQL для следующего сценария - PullRequest
1 голос
/ 17 мая 2011

Я использую MySQL и у меня следующий сценарий:

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

Таким образом, есть две таблицы: в узлах таблиц хранятся все точки и соответствующие им широта и долгота, а также в ссылке на таблицу, где хранится узел 1, который ссылается на узлы, и узел 2, который также ссылается на узлы.

Поскольку в MySQL и Rails у нас не может быть двух внешних ключей, указывающих на одну и ту же таблицу (поправьте меня, если я ошибаюсь), и, например, если я хочу найти начальное имя_узла и конечное имя_узла, как бы я сконструировал свой Оператор SQL? Я пытался

SELECT nodes.name from Nodes, links WHERE nodes.node_id = node1 что вроде работает, но очень медленно (у меня в каждой таблице меньше 10 тыс. Записей), и если я хочу найти оба имени для начального и конечного узлов, как я могу перейти и сделать это? Или если я хочу ограничить начальный узел lat> x и конечный узел lat

Спасибо.

С уважением, Энди.

1 Ответ

1 голос
/ 17 мая 2011

да, вы можете сделать это.Ваша структура таблицы выглядит хорошо.

Ваш запрос также хорош.попробуйте убедиться, что у вас есть правильные индексы для node_id для повышения производительности.

вы можете выполнить 2 запроса, по одному для каждого имени, или вы можете выполнить объединение двух подзапросов, если хотите, чтобы результаты были втот же запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...