tZar Skrevet 19. juni 2007 Del Skrevet 19. juni 2007 (endret) Hei, Har en mysql spørring som jeg helst hadde sett at hadde gått fortere, den dukker opp forholdsvis ofte i slow logen. mysql> SELECT count(*) as n FROM tbl_mail WHERE (not (mailid in (select mailid from tbl_mailtocompany))) AND (isnull(deleted) or deleted = 0) ORDER BY messagedate DESC; Følgende får man fra en describe: ----------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+--------------------+-------------------+-------------+------------------- ------------------+---------+---------+----------------------+-------+---------- ----------------+ | 1 | PRIMARY | tbl_mail | ref_or_null | deleted,deleted_2 | deleted | 2 | const | 32395 | Using whe re | | 2 | DEPENDENT SUBQUERY | tbl_mailtocompany | ref | PRIMARY,MailId,mai liden,myindexname | MailId | 8 | tbl_mail.MailId | 1 | Using whe re; Using index | Er det noen med smarte hoder som har forslag på hvordan man kan optimalisere denne spørringen? Endret 19. juni 2007 av tZar Lenke til kommentar
roac Skrevet 23. juni 2007 Del Skrevet 23. juni 2007 Du kan jo prøve å bruke et join isteden: Hvordan kan WHERE NOT EXISTS skrives om til join? Og forresten, om du skulle brukt din metode så er det du prøver å få til en where not exists Lenke til kommentar
Manfred Skrevet 23. juni 2007 Del Skrevet 23. juni 2007 sub-queries vil uansett drepe ytelsen. Jeg ville nok heller vurdert den til å kunne skrives om til en join. Lenke til kommentar
tZar Skrevet 25. juni 2007 Forfatter Del Skrevet 25. juni 2007 Join vil gi et ganske så stort recordset, har testet litt med det, og det virker ikke som at det er den helt store forskjellen i ytelsen. Tror jeg satser på å heller oppdatere et felt i tbl_mail med om den finns i tbl_mailtocompany eller ikke, slik at jeg omgår hele problemstillingen. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå