Union będzie szybsze, ponieważ po prostu przekazuje pierwszą instrukcję SELECT, a następnie analizuje drugą instrukcję SELECT i dodaje wyniki na koniec tabeli wyjściowej.
Połączenie przejdzie przez każdy wiersz obu tabel, znajdując dopasowania w drugiej tabeli, dlatego wymaga znacznie więcej przetwarzania ze względu na wyszukiwanie pasujących wierszy dla każdego wiersza.
EDYTUJ
Mówiąc Union mam na myśli Union All, ponieważ wydawało się to adekwatne do tego, co próbowałeś osiągnąć. Chociaż normalna Unia jest zazwyczaj szybsza niż Dołącz.
EDYTUJ 2 (Odpowiedz na komentarz @seebiscuit)
Nie zgadzam się z nim. Technicznie rzecz biorąc, bez względu na to, jak dobre jest twoje sprzężenie, „JOIN” jest nadal droższe niż czysta konkatenacja. Zrobiłem wpis na blogu, aby to udowodnić na moim blogu codePERF[dot]net . Praktycznie rzecz biorąc służą one dwóm zupełnie różnym celom i ważniejsze jest, aby upewnić się, że indeksowanie jest prawidłowe i używać odpowiedniego narzędzia do pracy.
Technicznie rzecz biorąc, myślę, że można to podsumować za pomocą następujących 2 planów wykonania zaczerpniętych z mojego wpisu na blogu:
UNION ALL
Plan wykonania
JOIN
Plan wykonania
Praktyczne wyniki
Praktycznie rzecz biorąc, różnica w wyszukiwaniu indeksu klastrowego jest znikoma: