Я створив команду SQL, яка використовує INNER JOIN на 9 таблицях, у будь-якому випадку ця команда займає дуже багато часу (більше п'яти хвилин). Тож мій фольклор запропонував мені змінити INNER JOIN на LEFT JOIN, оскільки ефективність роботи LEFT JOIN краща, незважаючи на те, що я знаю. Після того як я змінив її, швидкість запиту значно покращилася.
Мені хотілося б дізнатися, чому СПІЛЬНЕ ПРИЄДНАННЯ швидше, ніж ВНУТРІШНЯ ПРИЄДНАЙТЕСЬ?
Моя команда SQL виглядає нижче:
SELECT * FROM A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN D
і так далі
Оновлення: Це коротка моя схема.
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
? Якщо ні, то, можливо, ви зможете використовувати напівз'єднання. Якщо так, ви могли б використовуватиUNION
як альтернативу. ТутFROM
розміщується лише ваша стаття - це недостатня інформація.