tZar Skrevet 19. juni 2007 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
roac Skrevet 23. juni 2007 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
Manfred Skrevet 23. juni 2007 Skrevet 23. juni 2007 sub-queries vil uansett drepe ytelsen. Jeg ville nok heller vurdert den til å kunne skrives om til en join.
tZar Skrevet 25. juni 2007 Forfatter 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.
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å