Sugerencias de combinación (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Las sugerencias de combinación especifican que el optimizador de consultas aplique una estrategia de combinación entre dos tablas en SQL Server. Para obtener información general sobre las combinaciones y la sintaxis de combinación, vea CLÁUSULA FROM más JOIN, APPLY, PIVOT.
Precaución
Como el optimizador de consultas de SQL Server suele seleccionar el mejor plan de ejecución de una consulta, se recomienda que únicamente los administradores de bases de datos y desarrolladores experimentados utilicen las sugerencias como último recurso.
Se aplica a
Convenciones de sintaxis de Transact-SQL
Sintaxis
<join_hint> ::=
{ LOOP | HASH | MERGE | REMOTE }
Argumentos
{ LOOP | HASH | MERGE }
Especifica que la combinación de la consulta utiliza bucles, hash o mezclas. El uso LOOP
de , HASH
o MERGE JOIN
aplica una combinación determinada entre dos tablas. LOOP
no se puede especificar junto con RIGHT
ni FULL
como un tipo de combinación. Para más información, vea Combinaciones.
REMOTE
Especifica que la operación de combinación se realice en el sitio de la tabla derecha. Esto es útil cuando la tabla izquierda es una tabla local y la tabla derecha es una tabla remota. REMOTE
solo se debe usar cuando la tabla izquierda tiene menos filas que la tabla derecha.
Si la tabla derecha es local, la combinación se realiza localmente. Si ambas tablas son remotas pero de orígenes de datos diferentes, REMOTE
hace que la combinación se realice en el sitio de la tabla derecha. Si ambas tablas son tablas remotas del mismo origen de datos, REMOTE
no es necesario.
REMOTE
no se puede usar cuando uno de los valores que se comparan en el predicado de combinación se convierte en una intercalación diferente mediante la COLLATE
cláusula .
REMOTE
solo se puede usar para INNER JOIN
las operaciones.
Comentarios
Las sugerencias de combinación se especifican en la FROM
cláusula de una consulta. Las sugerencias de combinación exigen una estrategia de combinación entre dos tablas. Si se especifica una sugerencia de combinación para dos tablas, el optimizador de consultas aplica automáticamente el orden de combinación para todas las tablas combinadas de la consulta, en función de la posición de las ON
palabras clave. Cuando se usa sin CROSS JOIN
la ON
cláusula , se pueden usar paréntesis para indicar el orden de combinación.
Ejemplos
Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022
o AdventureWorksDW2022
, que se pueden descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.
A Uso de HASH
En el siguiente ejemplo se especifica que la operación JOIN
de la consulta está realizada por una combinación HASH
.
SELECT p.Name,
pr.ProductReviewID
FROM Production.Product AS p
LEFT OUTER HASH JOIN Production.ProductReview AS pr
ON p.ProductID = pr.ProductID
ORDER BY ProductReviewID DESC;
B. Uso de LOOP
En el siguiente ejemplo se especifica que la operación JOIN
de la consulta está realizada por una combinación LOOP
.
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. Uso de MERGE
En el siguiente ejemplo se especifica que la operación JOIN
de la consulta está realizada por una combinación MERGE
.
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