Предпочтительная последовательность связывания INNER JOIN - PullRequest
1 голос
/ 04 марта 2012

Я связываю три таблицы из системы MedWatch FDA, которые имеют общее поле Индивидуальный отчет о безопасности (ISR).Три таблицы: «Демография» (уникальная запись), «Наркотики» (уникальная запись, но связанная с «Демографией») и «Реакции» (одна или несколько записей, каждая из которых связана либо с «Наркотиками», либо с «Демографией»).

Мой вопросзаключается в том, что поскольку Reactions.ISR может быть ВНУТРЕННИМ присоединен либо к таблице «Наркотики», либо к таблице «Демография», есть ли предпочтительный способ?

Например, может быть:

SELECT Demographics.Case, Demographics.ISR, Drugs.DrugName, Reactions.PT
  FROM (Reactions INNER JOIN Drugs ON Reactions.ISR = Drugs.ISR) 
    INNER JOIN Demographics ON Drugs.ISR = Demographics.ISR

, который связывает демографические данные<- Drugs <- Иерархия реакций </p>

или:

SELECT Demographics.Case, Demographics.ISR, Drugs.DrugName, Reactions.PT
  FROM Reactions INNER JOIN (Drugs INNER JOIN Demographics ON Drugs.ISR = Demographics.ISR)
    ON Reactions.ISR = Demographics.ISR

, которая независимо связывает запись о наркотиках и записи о реакциях с записью Демография.

Оба возвращаюттот же набор записей, но мне было интересно, предпочтительнее ли один метод перед другим, возможно, чтобы запрос выполнялся быстрее.т.е. можно ли улучшить производительность запроса, изменив последовательность JOIN?

Ответы [ 2 ]

0 голосов
/ 04 марта 2012

Способ оптимизации запроса зависит от базы данных.

С точки зрения внутренних объединений (и предложений where) часто лучше всего сначала начать с самой ограничительной таблицы (или условия), а затем связать с «более широкими» объединениями / условиями.

Учитывая, что эти объединения не настолько ограничительны - т. Е. Не применяются никакие дополнительные условия, они, вероятно, будут эквивалентны - посмотрите планы запросов двух подходов для проверки.

0 голосов
/ 04 марта 2012

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

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