sql >> Databasteknik >  >> RDS >> Oracle

Dolda funktioner i Oracle

"Fullständiga tabellskanningar är inte alltid dåliga. Index är inte alltid bra."

En indexbaserad åtkomstmetod är mindre effektiv vid läsning av rader än en fullständig skanning när du mäter den i termer av åtkomstrader per arbetsenhet (vanligtvis per logisk läsning). Men många verktyg kommer att tolka en genomsökning av en hel tabell som ett tecken på ineffektivitet.

Ta ett exempel där du läser några hundra fakturor från en fakturatabell och letar upp en betalningsmetod i en liten uppslagstabell. Att använda ett index för att undersöka uppslagstabellen för varje faktura innebär förmodligen tre eller fyra logiska ios per faktura. Men en fullständig genomsökning av uppslagstabellen som förberedelse för en hash-join från fakturadata skulle troligen bara kräva ett par logiska läsningar, och hash-join själv skulle fullföljas i minnet nästan utan kostnad alls.

Men många verktyg skulle titta på detta och se "full table scan", och berätta för dig att försöka använda ett index. Om du gör det kan du ha justerat din kod.

För övrigt orsakar över beroende av index, som i exemplet ovan, "Buffer Cache Hit Ratio" att öka. Det är därför BCHR mestadels är nonsens som en prediktor för systemeffektivitet.



  1. Hur man använder främmande nyckel i oracle

  2. Vad är databasbegränsningar?

  3. Hur man skapar en ny användare och beviljar behörigheter i MySQL

  4. Min MySQL-trigger fungerar inte, enkel syntax, inte komplicerad