В общем, плохая идея «догадываться» о том, на что будет похожа производительность механизма SQL.Там происходит очень сложная оптимизация, которая учитывает размер таблиц, доступность индексов, количество индексов и т. Д.
В этом примере LEFT JOIN неверен, потому что выпроизводя полукартовое JOIN.По сути, в вашем наборе результатов будет много строк больше, чем вы думаете.Это потому, что каждая подходящая строка в t1 будет соединена с каждой подходящей строкой в t2.Если в t1 совпадают десять строк, а в t2 три, то вы получите не десять, а тридцать результатов.
Даже если гарантировано, что из каждой таблицы будет совпадать только одна строка (исключая проблему декартового объединения), ясно, что LEFTРешение JOIN даст вам набор данных, с которым очень сложно работать.Это связано с тем, что столбцы содержимого каждой таблицы, к которой вы присоединяетесь, будут отдельными столбцами в наборе результатов.Вам придется изучить каждый из столбцов, чтобы определить, какая таблица соответствует.
В этом случае UNION является лучшим решением.
Также обратите внимание:
Использование «*» в SELECT, как правило, не очень хорошая идея.Это снижает производительность (поскольку все столбцы должны быть собраны в результирующем наборе), и в таком случае вы теряете возможность ALIAS каждого из столбцов содержимого, что затрудняет работу с результирующим набором.*
Это очень новое использование LEFT JOIN.Обычно он используется для связывания строк из двух разных таблиц.В этом случае вы используете его для создания трех отдельных наборов результатов "бок о бок".Большинству программистов SQL придется какое-то время взглянуть на это утверждение, чтобы выяснить, каково было ваше намерение.