Det gode SAS-program #18: Benyt index på større tabeller

0

Vi arbejder ofte med store og bredde tabeller i SAS. Du kan få bedre performance på læsning af dine SAS- tabeller ved at bruge index, når:

  • SAS-tabellen har mange rækker og måske også mange kolonner
  • I kun skal læse en delmængde af data - f.eks. mindre end 10% af rækkerne - og dette sker flere gange
  • I kan udtrykke begrænsningen af rækker med et WHERE statement

Generelt bliver index brugt alt for lidt. Måske fordi man bare ikke kender muligheden, eller fordi man tror, det er svært. Men det er meget enkelt. Her er et lille læringseksempel. Vi danner en tabel med 5 millioner rækker med tilfældige fornavne og efternavne ud af de 10 mulige.

Dgs#18.1

Herefter danner vi et index på kolonnen ID med PROC DATASETS. Du kan også benytte PROC SQL til samme opgave. Nu er der index på kolonnen ID. Når nogen prøver at læse tabellen og skriver et WHERE statement hvor man udvælger en eller flere ID’er så vil SAS benytte index og finde disse rækker lynhurtigt. Nedenfor en lille test med og uden index.

Dgs#18.2

Testprogrammet henter 1 række ud af de 5 millioner. I loggen nedenfor kan du se, at første gang – uden index – tager det 0.45 sekunder. Anden gang – med index – tager det mindre end 0.00 sekunder. Altså lynhurtigt. Denne case er kun til læring. Normalt vil man have mange kolonner, og så vil svartiderne blive større, og dermed vil gevinsten ved at bruge index blive markant.

Dgs#18.3

Du har nu lært det mest elementære om index, men nok til at gå i gang. Her kan du læse mere om dette.

Koden i dette program kan du hente på SASCommunity.dk.

Georg

Det gode SAS-program indeholder anbefalinger, der løbende vil blive revideret – giv os gerne feedback, hvis du har forslag til forbedringer.
Share

About Author

Georg Morsing

Education Director

Georg Morsing, SAS Community Senior Manager, har arbejdet med SAS-software siden 1981. Først på Statistisk Kontor i Københavns Kommune og siden 1985 hos SAS Institute. Georg har en bred og dyb erfaring med anvendelse af SAS-software fra stillinger som uddannelseschef, konsulentchef og softwareudviklingschef. Georg har ansvar for faglige netværk og brugerkonferencer i Danmark. Her på bloggen giver han tips og tricks til optimal og effektiv SAS-programmering.

Leave A Reply

Back to Top