Nie wiem czy dobrze rozumiem ale zapytanie jakie kolega mi podesłał działa na MS SQL błyskawicznie, a identyczne zapytanie z tymi samymi polami i danymi na MySQL trwa i trwa i trwa. Pola oczywiście mają ustawione indeksy ale to nie przyspiesza.
Czy takie zapytanie jest prawidłowe dla MySQL-a czy w ogóle występuje coś takiego jak OR EXISTS ? da się to zapytanie przerobić pod MySQL-a ?
SELECT cta_KntKarty.Knt_Akronim, cta_Promocje.Prm_PrmId, cta_TwrKarty.Twr_GIDNumer, cta_TwrKarty.Twr_Kod, cta_Promocje.Prm_Upust, cta_Promocje.Prm_RodzajCeny, cta_Promocje.Prm_Typ FROM cta_KntKarty INNER JOIN cta_TwrKarty ON cta_TwrKarty.Twr_GIDNumer = 72583 INNER JOIN cta_Promocje ON (cta_KntKarty.Knt_GIDNumer = cta_Promocje.Prm_KntNumer OR EXISTS (SELECT 1 AS Expr1 FROM cta_KntLinki WHERE (cta_KntKarty.Knt_GIDNumer = KnL_GIDNumer) AND (CTA.KntKarty.Knt_GidTyp = KnL_GIDTyp) AND (cta_Promocje.Prm_KnGNumer = KnL_GrONumer) AND (KnL_GrOTyp = -32))) AND (cta_TwrKarty.Twr_GIDNumer =cta_Promocje.Prm_TwrNumer OR EXISTS (SELECT 1 AS Expr1 FROM cta_TwrLinki WHERE (cta_TwrKarty.Twr_GIDNumer = TwL_GIDNumer) AND (cta_TwrKarty.Twr_GIDTyp = TwL_GIDTyp) AND (cta_Promocje.Prm_TwGNumer = TwL_GrONumer) AND (TwL_GrOTyp = -16))) WHERE (cta_KntKarty.Knt_Akronim = '50033')