Запрос:NETEZZA: Может ли LEFT JOIN быть быстрее, чем INNER JOIN?
SELECT * FROM TABLE1 TBL
INNER JOIN CROSS_REF_TABLE XREF
ON TBL.COL = XREF.COL
VS
SELECT * FROM TABLE1 TBL
LEFT JOIN CROSS_REF_TABLE XREF
ON TBL.COL = XREF.COL
WHERE XREF.COL IS NOT NULL
Может LEFT JOIN быстрее, чем внутреннее соединение? В моем случае по какой-то причине я вижу, что LEFT JOIN работает быстрее.
ПРИМЕЧАНИЕ. Все таблицы имеют случайное распределение.
Когда я смотрю план выполнения, разница между двумя с добавленным распределением по таблице перекрестных ссылок.
LEFT JOIN:
Node 32.
[SPU Sequential Scan table "CROSS_REF_TABLE XREF" as "XREF" {}]
-- Estimated Rows = 129044, Width = 18, Cost = 0.0 .. 0.2, Conf = 100.0
Projections:
1:XREF.ORG_SK 2:XREF.COL
[SPU Distribute on {(XREF.COL)}]
[HashIt for Join]
INNER JOIN:
Node 3.
[SPU Sequential Scan table "CROSS_REF_TABLE XREF" as "XREF" {}]
-- Estimated Rows = 129044, Width = 18, Cost = 0.0 .. 0.4, Conf = 100.0
Projections:
1:XREF.ORG_SK 2:XREF.COL
[HashIt for Join]
ли Netezza LEFT JOIN вложенную Loop или хеширования?
Несомненно, операция объединения, которую он выбирает, будет основываться на оценочном количестве строк, а не на выборе левого или внутреннего соединения. – TZHX
Оба вопроса в вашем вопросе идентичны и используют внешнее соединение. –
Поскольку Inner & Left join возвращают два разных результата, главный вопрос должен быть: * Какой результат мне нужен? * – dnoeth