Tôi đã tạo lệnh SQL sử dụng INNER THAM GIA trên 9 bảng, dù sao lệnh này mất nhiều thời gian (hơn năm phút). Vì vậy, dân gian của tôi đề nghị tôi thay đổi INNER THAM GIA thành TRÁI PHIẾU vì hiệu suất của LEFT THAM GIA tốt hơn, bất chấp những gì tôi biết. Sau khi tôi thay đổi nó, tốc độ truy vấn đã được cải thiện đáng kể.
Tôi muốn biết tại sao LEFT THAM GIA nhanh hơn INNER THAM GIA?
Lệnh SQL của tôi trông như dưới đây:
SELECT * FROM A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN D
vân vân
Cập nhật: Đây là tóm tắt về lược đồ của tôi.
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
coUOM
? Nếu không bạn có thể sử dụng một bán tham gia. Nếu có, bạn sẽ có thể sử dụngUNION
như là một thay thế. Chỉ đăngFROM
điều khoản của bạn là thông tin không đầy đủ ở đây.