... med en WHERE betingelse afgrænser du dit udtræk til de få rækker der matcher dit datasæt. Er der yderligere et indeks der matcher din where betingelse (helt eller delvist) vil du få en ekstremt effektiv query. Sorteringen sker derfor kun på de fundne rækker.
En TOP X er derimod en afgrænsning af visning. Dvs din select trækker samtlige data ud, derefter sorteres de og slutteligt tager du de 50 første rækker. Du har altså betalt prisen for at finde samtlige rækker og sortere dem, men bruger altså kun 50 rækker.
Hvis du kan regne ud hvor lang tid man typisk er om at få 50 rækker ud, så kan du forbedre performance ved at kombinere din TOP 50 med en dato-afgrænsing. Fx. hvis man typisk er 10 dage om at få 50 rækker i loggen, så laver du et udtryk som dette
select top 50 * from logbog where dato>now-20 order by dato desc
Bemærk at jeg trækker 20 dage fra now - dermed har man en sikkerhedsmargen ifht dato-afgrænsningen, men udtrækket og sorteringen laver du væsentligt mindre end når hele datasættet skal gennemgås.
ok - hvis du foeler at mit svar ikke var fyldestgoerende nok giver jeg gerne pointene tilbage - poster spm med "Point til stoney96" i Access kategorien
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.