Langsom OUTER JOIN

Utroligt hvor effektiv lidt omskrivning af SQL kan være! Forklaring følger ...

Jeg havde i min MS SQL database et view, der bl.a. omfattede en WHERE clause med 2 udtryk adskilt af OR. Viewet returnerede kun 1150 rækker, men eksekveringen tog 45+ sekunder! Index på relevante felter gav intet positivt resultat. Ved at fjerne halvdelen af min WHERE clause (OR ...) gjorde at viewet kunne eksekvere på <1 sekund. Dette gjalt for begge dele af WHERE-udttrykket.

What to do?

Ved skille hele view SELECT udtrykket i 2 "ens" dele - blot med hver deres WHERE clause - og så lave en UNION ALL i mellem ... TADAAA! Hele viewet eksekverer på <1 sekund.

Tags: