Join Hints (Transact-SQL)

Wskazówki łączyć określa, że optymalizator kwerendy wymusić strategii łączyć między dwiema tabelami.

Important noteImportant Note:

Ponieważ SQL Server optymalizator kwerendy zazwyczaj wybiera najlepszą plan wykonania kwerendy, zaleca się pamięci podręcznej, wskazówek, łącznie z <join_hint>, być używane tylko w ostateczności przez doświadczonych programistów i administratorów bazy danych.

Stosuje się do:

DELETE

SELECT

UPDATE

Topic link iconKonwencje składni języka Transact-SQL

<join_hint> ::= 
     { LOOP | HASH | MERGE | REMOTE }

Argumenty

  • PĘTLA | MIESZANIA | SCALANIA
    Określa, że łączyć w kwerendzie powinny używać pętli, mieszania i scalanie.Za pomocą |HASH LOOP | MERGE łączyć wymusza określonego łączyć między dwiema tabelami.Nie można określić LOOP, łącznie z w prawo lub FULL jako typ łączyć.

  • ZDALNE
    Określa, że łączyć operacja jest wykonywana na stronie prawej tabela.Jest to przydatne, gdy lewej tabeli, jest tabela lokalna i z tabeli po prawej tabela zdalna.ZDALNEGO należy używać tylko wtedy, gdy w lewej tabela zawiera mniej wierszy niż w prawej tabela.

    W przypadku lokalnych prawej tabela łączyć jest wykonywane lokalnie.Jeśli obie tabele są zdalnego, ale z różnych źródeł danych, zdalnego powoduje, że w sprzężeniu, które mają być wykonywane w witrynie z tabela po prawej.Jeśli obie tabele są tabelami zdalnym z tego samego urządzenie źródłowe danych, zdalnego nie jest wymagana.

    Nie można użyć PILOTA, gdy jest jedną z wartości są porównywane w predykacie łączyć rzutować na różnych sortowanie, przy użyciu klauzula COLLATE.

    ZDALNE można używać tylko w przypadku operacji łączyć wewnętrzne.

Remarks

łączyć w pamięci podręcznej wskazówek są określone w klauzula FROM kwerendy.Wskazówki dotyczące łączyć wymusić strategii łączyć między dwiema tabelami.Jeżeli wskazówka łączyć jest określona dla każdej z dwóch tabel, optymalizator kwerendy automatycznie wymusza kolejność łączyć dla wszystkich połączonych tabel w kwerendzie, na podstawie położenia ON słowa kluczowe.Użyto łączyć pytania bez klauzula ON nawiasów może służyć do wskazania kolejności łączyć.

Przykłady

A.Za pomocą HASH

W poniższym przykładzie określa, że JOIN Operacja w kwerendzie jest wykonywana przez HASH łączyć.

USE AdventureWorks;
GO
SELECT p.Name, pr.ProductReviewID
FROM Production.Product p
LEFT OUTER HASH JOIN Production.ProductReview pr
ON p.ProductID = pr.ProductID
ORDER BY ProductReviewID DESC;

B.Za pomocą LOOP

W poniższym przykładzie określa, że JOIN Operacja w kwerendzie jest wykonywana przez LOOP łączyć.

USE AdventureWorks;
GO
DELETE FROM Sales.SalesPersonQuotaHistory 
FROM Sales.SalesPersonQuotaHistory AS spqh
    INNER LOOP JOIN Sales.SalesPerson AS sp
    ON spqh.SalesPersonID = sp.SalesPersonID
WHERE sp.SalesYTD > 2500000.00;
GO

C.Za pomocą korespondencji SERYJNEJ

W poniższym przykładzie określa, że JOIN Operacja w kwerendzie jest wykonywana przez MERGE łączyć.

USE AdventureWorks;
GO
SELECT poh.PurchaseOrderID, poh.OrderDate, pod.ProductID, pod.DueDate, poh.VendorID 
FROM Purchasing.PurchaseOrderHeader AS poh
INNER MERGE JOIN Purchasing.PurchaseOrderDetail AS pod 
    ON poh.PurchaseOrderID = pod.PurchaseOrderID;
GO