Внутреннее соединение против естественного соединения, по скорости? - PullRequest
9 голосов
/ 30 января 2011

У меня есть беседа с моим коллегой, и мы застряли в вопросе о том, быстрее ли внутреннее объединение, чем естественное объединение, просто из-за того, что предложение ON указано во внутреннем соединении, и поэтому движку SQL не нужно сравнивать структуры таблиц для определения общих столбцов.

Пожалуйста, поделитесь своими мыслями / ответами.

Ответы [ 3 ]

8 голосов
/ 30 января 2011

Это будет зависеть от СУБД и, в некоторой степени, от объединенных таблиц, и разница, как правило, не будет измеримой. С ВНУТРЕННИМ СОЕДИНЕНИЕМ будет две копии общих столбцов; с ЕСТЕСТВЕННЫМ СОЕДИНЕНИЕМ будет только одна копия общих столбцов.

Если промежуточные результаты должны быть записаны на диск или отсортированы, будет больше данных для управления и немного больше данных, которые будут возвращены клиенту через соединение клиент-сервер, поэтому INNER JOIN может занять немного дольше, чем ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ. Если общие столбцы достаточно велики - например, поля длинных символов - эта разница в размере может быть значительной.

Разница во времени для подготовки двух типов объединения совершенно незначительна. Оба должны прочитать информацию обо всех столбцах обеих таблиц, участвующих в объединении, и обработка этих данных в значительной степени схожа.

Во время выполнения копирование данных для формирования промежуточных результатов может быть немного сложнее для ЕСТЕСТВЕННОГО СОЕДИНЕНИЯ - потому что вы не просто берете копию каждой строки - но вы не обязательно берете полную копию каждая строка для ВНУТРЕННЕГО СОЕДИНЕНИЯ также может быть незначительной. И, как и раньше, в совокупности для ЕСТЕСТВЕННОГО СОЕДИНЕНИЯ копируется немного меньше данных, поэтому у него есть небольшое преимущество.

Таким образом, в целом, ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ может быть немного быстрее, чем ВНУТРЕННЕЕ СОЕДИНЕНИЕ, но разница все же, вероятно, будет незначительной.

2 голосов
/ 30 января 2011

Я не могу себе представить, что найти общие столбцы настолько дорого, чтобы вы могли поддержать эту гипотезу.

1 голос
/ 30 января 2011

В исключительном случае естественное соединение может быть таким же быстрым, как и внутреннее соединение.

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