2010-09-02 20 views
11

Muszę uruchomić polecenie select w kilku tabelach. Jestem pewien, że tabele zwracają różne rekordy. W każdym razie używam UNION ALL.wydajność związku a związku wszystko

Czy lepiej używać UNION lub UNION ALL pod względem wydajności, gdy jestem pewien, że tabele zwracają różne rekordy?

+0

możliwe duplikat [Union lub unii wszystkim, że jest pytanie] (http://stackoverflow.com/questions/3909563/to-union-or-union-all-that-is-the-question) –

Odpowiedz

5

UNION ALL zawsze jest szybsza, ponieważ UNION wykluczyć zduplikowane wpisy

1

Lepiej używać UNION ALL, gdy wiesz, że chcesz wszystkie wiersze wyników, niezależnie od tego, czy wiesz, że będą różne, czy nie. UNION bez "all" będzie zawsze zawsze wykonywał "odrębną kontrolę", niezależnie od tego, jakie dane faktycznie są.

0

Dlaczego UNION ALL jest szybszy? Ponieważ UNION musi zrobić sortowanie, aby usunąć duplikaty. Jeśli nie musisz usuwać duplikatów, wówczas opcja UNION ALL jest lepszą opcją, jednak UNION ma cel i powinna być użyta w razie potrzeby.

3

UNION implementuje wewnętrznie dwa zapytania. 1. SELECT, który zwróci zestaw danych 2. DISTINCT. Każdy, kto przeszukał bazy danych, może łatwo zrozumieć, że klauzula DISTINCT jest niezwykle kosztowna pod względem przetwarzania.

Jeśli masz pewność, że wynikowy zbiór danych nie musi mieć unikalnych wierszy, możemy pominąć UNION i zamiast tego użyć UNION ALL.

UNION ALL będzie taka sama jak UNION wyjątkiem, że to nie ogień DISTINCT wewnętrznie oszczędzając nam kosztownych operacji

Powiązane problemy