Join Hints (Transact-SQL)
Wskazówki łączyć określa, że optymalizator kwerendy wymusić strategii łączyć między dwiema tabelami.
Important 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:
<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
See Also