sql >> Database teknologi >  >> RDS >> Oracle

Skjulte funktioner i Oracle

"Fulde tabelscanninger er ikke altid dårlige. Indekser er ikke altid gode."

En indeksbaseret adgangsmetode er mindre effektiv til at læse rækker end en fuld scanning, når du måler den i form af rækker tilgået pr. arbejdsenhed (typisk pr. logisk læsning). Men mange værktøjer vil fortolke en fuld tabelscanning som et tegn på ineffektivitet.

Tag et eksempel, hvor du læser et par hundrede fakturaer fra en fakturatabel og slår en betalingsmetode op i en lille opslagstabel. Brug af et indeks til at undersøge opslagstabellen for hver faktura betyder sandsynligvis tre eller fire logiske io'er pr. faktura. En fuld scanning af opslagstabellen som forberedelse til en hash-join fra fakturadataene ville dog sandsynligvis kun kræve et par logiske læsninger, og selve hash-joinet ville blive færdiggjort i hukommelsen næsten uden omkostninger overhovedet.

Men mange værktøjer ville se på dette og se "fuld tabelscanning" og fortælle dig at prøve at bruge et indeks. Hvis du gør det, har du måske lige de-tunet din kode.

Over afhængighed af indekser, som i ovenstående eksempel, får i øvrigt "Buffer Cache Hit Ratio" til at stige. Dette er grunden til, at BCHR for det meste er nonsens som en forudsigelse af systemeffektivitet.



  1. Hvad returnerer en vellykket MySQL DELETE? Hvordan kontrollerer man, om SLETNING lykkedes?

  2. Sikring af MySQL-server

  3. Views SELECT indeholder en underforespørgsel i FROM-sætningen

  4. ORA-00984:kolonne ikke tilladt her