| Termin | Definicja |
|---|---|
| Wydajność JOIN | Wydajność złączeń zależy od dostępnych indeksów i wybranego przez optymalizator algorytmu, np. Hash czy Merge. Od czego zależy koszt wykonania złączeniaJOIN łączy wiersze z dwóch lub większej liczby tabel na podstawie warunku określonego w klauzuli Znaczenie ma także rodzaj złączenia. Indeksy i selektywność kolumn łączeniaIndeks na kolumnie używanej w warunku złączenia może ograniczyć liczbę odczytywanych rekordów, ale nie gwarantuje automatycznie szybszego wykonania. Optymalizator ocenia koszt różnych planów i może uznać, że skan całej tabeli będzie tańszy, jeżeli zapytanie ma zwrócić dużą część danych. Indeks jest szczególnie przydatny wtedy, gdy warunek jest selektywny, czyli odrzuca znaczną większość wierszy. Kolumna zawierająca niewiele różnych wartości, na przykład pole logiczne, zwykle daje mniejszą korzyść przy samodzielnym indeksowaniu. Ważna jest zgodność typów danych po obu stronach warunku. Łączenie kolumn o różnych typach może wymusić niejawną konwersję, a ta może utrudnić użycie indeksu albo zwiększyć koszt obliczeń. Podobny problem występuje, gdy kolumna jest opakowana funkcją, wyrażeniem lub operacją rzutowania, której silnik nie potrafi obsłużyć za pomocą istniejącego indeksu. Przy dużych tabelach warto również sprawdzić, czy statystyki opisujące rozkład wartości są aktualne, ponieważ optymalizator wykorzystuje je do oszacowania liczby dopasowań. Hash join, merge join i nested loopJednym z możliwych algorytmów jest nested loop join, czyli złączenie pętli zagnieżdżonych. Silnik wybiera tabelę zewnętrzną, a dla każdego jej wiersza wyszukuje dopasowanie w tabeli wewnętrznej. Taki plan może być korzystny, gdy pierwsza tabela po filtrach jest mała, a po stronie wewnętrznej istnieje skuteczny indeks. Przy dużej liczbie wierszy i braku odpowiedniego dostępu do danych liczba powtarzanych odczytów może jednak stać się bardzo wysoka. Hash join buduje tablicę mieszającą dla jednego ze zbiorów, a następnie wyszukuje w niej klucze z drugiego zbioru. Ten algorytm często pasuje do większych, nieposortowanych danych i złączeń opartych na równości, takich jak Odczyt planu wykonania i diagnostykaOcena wydajności JOIN powinna opierać się na planie wykonania, a nie wyłącznie na czasie pojedynczego uruchomienia. Plan pokazuje między innymi wybrany algorytm złączenia, sposób dostępu do tabel, przewidywaną i rzeczywistą liczbę wierszy, operacje sortowania oraz wykorzystanie pamięci. Duża różnica między estymowaną a rzeczywistą liczbą rekordów wskazuje na problem z informacjami używanymi przez optymalizator, z rozkładem danych albo z parametrami zapytania. Przy analizie należy sprawdzić, czy filtr jest wykonywany przed złączeniem, czy dopiero po utworzeniu większego zbioru pośredniego. Trzeba również zweryfikować warunek |