it-swarm.dev

Różnica między łączeniem Hash, Merge i Loop?

W SQL Server można określić wskazówki dotyczące łączenia:

  • HASH DOŁĄCZ
  • SCAL DOŁĄCZ
  • LOOP DOŁĄCZ

Jaka jest definicja tych trzech wskazówek dotyczących łączenia i kiedy należy ich używać?

42
Andrew Bickerton

Z MSDN w temacie Zaawansowane koncepcje dostrajania zapytań :

SQL Server wykorzystuje trzy typy operacji łączenia:

  • Łączy się zagnieżdżone pętle

  • Scalanie łączy

  • Hash dołącza

Jeśli jedno wejście sprzężenia jest małe (mniej niż 10 wierszy), a drugie wejście sprzężenia jest dość duże i zindeksowane w swoich kolumnach łączenia, sprzężenie zagnieżdżonych indeksów pętli jest najszybszą operacją łączenia, ponieważ wymagają najmniejszej liczby operacji we/wy i najmniejszej liczby porównań. Aby uzyskać więcej informacji o zagnieżdżonych pętlach, zobacz Opis połączeń zagnieżdżonych pętli.

Jeśli dwa dane wejściowe łączenia nie są małe, ale są sortowane według kolumny łączenia (na przykład, jeśli zostały uzyskane przez skanowanie posortowanych indeksów), łączenie scalające jest najszybszą operacją łączenia. Jeśli oba wejścia łączenia są duże, a dwa wejścia mają podobną wielkość, połączenie scalające z wcześniejszym sortowaniem i połączenie mieszające oferują podobną wydajność. Jednak operacje łączenia skrótu są często znacznie szybsze, jeśli dwa rozmiary wejściowe znacznie się od siebie różnią. Aby uzyskać więcej informacji, zobacz Opis scalania połączeń.

Złączenia Hash mogą skutecznie przetwarzać duże, nieposortowane, nieindeksowane dane wejściowe.

Uważam jednak, że powinieneś zacząć od bardziej podstawowego tematu: Strojenie zapytania i na koniec przejść do korzystania ze wskazówek dotyczących zapytań.

39
Marian