Saya telah membuat perintah SQL yang menggunakan INNER JOIN pada 9 tabel, toh perintah ini membutuhkan waktu yang sangat lama (lebih dari lima menit). Jadi rakyat saya menyarankan saya untuk mengubah INNER JOIN menjadi LEFT JOIN karena kinerja LEFT JOIN lebih baik, terlepas dari apa yang saya ketahui. Setelah saya mengubahnya, kecepatan kueri membaik secara signifikan.
Saya ingin tahu mengapa LEFT JOIN lebih cepat daripada INNER JOIN?
Perintah SQL saya terlihat seperti di bawah ini:
SELECT * FROM A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN D
dan seterusnya
Pembaruan: Ini adalah ringkasan skema saya.
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
? Jika tidak, Anda mungkin dapat menggunakan semi gabung. Jika ya, Anda bisa menggunakanUNION
sebagai alternatif. Memposting hanyaFROM
klausa Anda tidak cukup informasi di sini.