Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > JOIN vs INNER JOIN, связные таблицы


Автор: manu 25.10.2004, 18:23
1) Какая разница между JOIN и INNER JOIN? Который работает быстрее?
2) У меня в базе есть много таблиц такого вида
X_HEADER
ID int
DATE int

X_TABLE
ID int
HEADER_ID int
PRODUCT_ID int
PRICE int

Очень часто (постоянно!) приходится делать запросы вида:
SELECT SUM(X_TABLE.PRICE) AS X_SUM
FROM X_HEADER JOIN X_TABLE ON X_HEADER.ID=X_TABLE.HEADER_ID
WHERE X_TABLE.PRODUCT_ID=1
AND DATE<'2004.10.1'

иногда такие:
SELECT SUM(X_TABLE.PRICE) AS X_SUM
FROM X_HEADER JOIN X_TABLE ON X_HEADER.ID=X_TABLE.HEADER_ID
GROUP BY X_TABLE.PRODUCT_ID
WHERE DATE<'2004.10.1'

Вопрос: как можно их _максимально_ убыстрить?

P.S. База данных MS SQL Server 2k

Автор: Akina 25.10.2004, 18:32
Отличаются направлением. Т.е. если в одной таблице нет записей, соответствующих внешнему ключу, они ведут себя по-разному...

Операция INNER JOIN (или просто JOIN) объединяет записи из двух таблиц, если связующие поля этих таблиц содержат одинаковые значения.

Используйте операцию LEFT JOIN, чтобы создать левое внешнее объединение. С помощью левого внешнего объединения выбираются все записи первой (левой) таблицы, даже если они не соответствуют записям во второй (правой) таблице.

Используйте операцию RIGHT JOIN, чтобы создать правое внешнее объединение. С помощью правого внешнего объединения выбираются все записи второй (правой) таблицы, даже если они не соответствуют записям в первой (левой) таблице.

Крайний случай - OUTER JOIN. Объединяет записи таблиц, даже если в другой таблице (неважно какой, левой или правой) нет соответствующих записей.
Добавлено @ 18:32
По скорости они не различаются (разве за счет объема передаваемых данных), а вот результаты будут давать РАЗНЫЕ!!!

Автор: Guest 26.10.2004, 16:08
Цитата(manu @ 25.10.2004, 18:23)

Какая разница между JOIN и INNER JOIN? Который работает быстрее?
некакои. JOIN сервер интерпретирует как INNER JOIN.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)