He creado el comando SQL que utiliza INNER JOIN para 9 tablas, de todos modos este comando toma mucho tiempo (más de cinco minutos). Entonces mi gente me sugirió cambiar INNER JOIN a LEFT JOIN porque el rendimiento de LEFT JOIN es mejor, en primer lugar es a pesar de lo que sé. Después de cambiar, la velocidad de consulta mejora significativamente.INNER JOIN vs LEFT JOIN rendimiento en SQL Server
Me gustaría saber por qué LEFT JOIN es más rápido que INNER JOIN?
Mi comandos SQL se parece a continuación: SELECT * FROM A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN D
y así sucesivamente
Actualización: Esta es breve de mi esquema.
FROM sidisaleshdrmly a -- NOT HAVE PK AND FK
INNER JOIN sidisalesdetmly b -- THIS TABLE ALSO HAVE NO PK AND FK
ON a.CompanyCd = b.CompanyCd
AND a.SPRNo = b.SPRNo
AND a.SuffixNo = b.SuffixNo
AND a.dnno = b.dnno
INNER JOIN exFSlipDet h -- PK = CompanyCd, FSlipNo, FSlipSuffix, FSlipLine
ON a.CompanyCd = h.CompanyCd
AND a.sprno = h.AcctSPRNo
INNER JOIN exFSlipHdr c -- PK = CompanyCd, FSlipNo, FSlipSuffix
ON c.CompanyCd = h.CompanyCd
AND c.FSlipNo = h.FSlipNo
AND c.FSlipSuffix = h.FSlipSuffix
INNER JOIN coMappingExpParty d -- NO PK AND FK
ON c.CompanyCd = d.CompanyCd
AND c.CountryCd = d.CountryCd
INNER JOIN coProduct e -- PK = CompanyCd, ProductSalesCd
ON b.CompanyCd = e.CompanyCd
AND b.ProductSalesCd = e.ProductSalesCd
LEFT JOIN coUOM i -- PK = UOMId
ON h.UOMId = i.UOMId
INNER JOIN coProductOldInformation j -- PK = CompanyCd, BFStatus, SpecCd
ON a.CompanyCd = j.CompanyCd
AND b.BFStatus = j.BFStatus
AND b.ProductSalesCd = j.ProductSalesCd
INNER JOIN coProductGroup1 g1 -- PK = CompanyCd, ProductCategoryCd, UsedDepartment, ProductGroup1Cd
ON e.ProductGroup1Cd = g1.ProductGroup1Cd
INNER JOIN coProductGroup2 g2 -- PK = CompanyCd, ProductCategoryCd, UsedDepartment, ProductGroup2Cd
ON e.ProductGroup1Cd = g2.ProductGroup1Cd
¿Te proyectar cualquier atributo de 'coUOM'? Si no, puede usar una semi unión. Si es así, podría usar 'UNION' como alternativa. Publicar solo su cláusula 'FROM' es información inadecuada aquí. – onedaywhen
Me lo he preguntado tan a menudo (porque veo todo el tiempo). –
¿Perdió un pedido por en su breve esquema? Hace poco me enfrenté al problema de que cambiar INNER JOIN a LEFT OUTER JOIN acelera la consulta de 3 minutos a 10 segundos. Si realmente tiene Order By en su consulta, lo explicaré más adelante como una respuesta.Parecía que todas las respuestas realmente no explicaban el caso al que me enfrentaba. –