Ищем некоторые умные стратегии SQL для работы с таблицей поиска - PullRequest
0 голосов
/ 16 июля 2009

Я хочу сохранить расстояние между различными местоположениями в таблице.

CREATE TABLE `example` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `from` VARCHAR( 8 ) NOT NULL ,
    `to` VARCHAR( 8 ) NOT NULL ,
    `distance` DECIMAL( 6, 2 ) NOT NULL ,
    PRIMARY KEY ( `id` ) ,
    INDEX ( `from` , `to` )
 )

При измерении расстояния между двумя точками оно вставляется в таблицу. Найти расстояние между «от» и «до», очевидно, очень легко. Однако расстояние между «до» и «от» точно такое же. Я не хочу делать еще один ряд, просто чтобы переключить «на» и «от». Я также предпочел бы не создавать таблицу поиска для этой таблицы, чтобы выполнить это.

sql для выбора расстояния будет вызываться довольно часто, поэтому это должен быть эффективный запрос.

Я упростил таблицу, так что не беспокойтесь о местах, которые являются varchars и т. Д.

У кого-нибудь есть стратегии, которые они могли бы порекомендовать?

Ответы [ 2 ]

4 голосов
/ 16 июля 2009

Назовите местоположения 'A' и 'B'. Если A Таким образом, вы сохраняете каждую комбинацию только один раз, и запрос выполняется быстро.

0 голосов
/ 16 июля 2009

Могу я предложить что-то совершенно другое. Каждая точка имеет координаты относительно одной и той же точки, поэтому расстояния будут рассчитываться при задании двух точек, а не сохраняться в БД.

Теперь, если это точки на картах / графиках, тогда существует другое решение.

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