Záleží; spusťte je oba, abyste to zjistili; pak spusťte 'vysvětlení vybrat' pro vysvětlení.
Skutečný rozdíl ve výkonu se může pohybovat od „prakticky neexistující“ po „docela významný“ v závislosti na tom, kolik řádků v A s id='12345' nemá žádné odpovídající záznamy v B a C.
Aktualizovat (na základě zaslaných plánů dotazů)
Když použijete INNER JOIN, nezáleží na tom (výsledky, ne výkon), se kterou tabulkou začít, takže se optimalizátor pokusí vybrat tu, o které si myslí, že by fungovala nejlépe. Zdá se, že máte indexy ve všech příslušných sloupcích PK / FK a buď nemáte index na friend_events.userid
nebo existuje příliš mnoho záznamů s userid = '13006'
a nepoužívá se; v obou případech optimalizátor vybere tabulku s méně řádky jako „základ“ – v tomto případě je to zcms_users
.
Když použijete LEFT JOIN, dělá záleží (výsledky), kterou tabulkou začít; tedy friend_events
je vybráno. A teď proč tímto způsobem to zabere méně času, nejsem si jistý; Hádám friend_events.userid
stav pomáhá. Pokud byste k tomu přidali index (je to opravdu varchar, mimo jiné? ne číselný?), vaše INNER JOIN by se také mohlo chovat jinak (a být rychlejší).