sql >> Databasteknik >  >> RDS >> Oracle

Hur ökar Fixed-längd-poster och Fixed-längd-fält databasprestanda?

Förenklad, konceptuell, icke-databasspecifik förklaring:

När den maximala möjliga postlängden är känd i förväg, kan slutet av posten/början av nästa post hittas i konstant tid. Detta beror på att den platsen är beräkningsbar med enkel addition, mycket analogt med arrayindexering. Föreställ dig att jag använder int s som pekare till poster, och att poststorleken är en heltalskonstant definierad någonstans. För att sedan gå från den aktuella posten till nästa:

int current_record = /* whatever */;
int next_record = current_record + FIXED_RECORD_SIZE;

Det är det!

Alternativt, när du använder strängavslutade (eller på annat sätt avgränsade) poster och fält, kan du föreställa dig att nästa fält/post hittas av en linjär tidsskanning, som måste titta på varje tecken tills avgränsaren hittas. Som tidigare,

char DELIMITER = ','; // or whatever
int current_record = /* whatever */;
int next_record = current_record;
while(character_at_location(next_record) != DELIMITER) {
    next_record++;
}

Detta kan vara en förenklad eller naiv version av den verkliga implementeringen, men den allmänna idén består fortfarande:du kan inte enkelt göra samma operation i konstant tid, och även om det vore konstant tid, är det osannolikt att det går lika snabbt som utföra en enda tilläggsoperation.



  1. DECODE( ) funktion i SQL Server

  2. mysql beställ varchar-fält som heltal

  3. Android- Data tilldelas i spinner men när det är valt visar det inte värdet i spinner

  4. Hur kontrollerar jag efter Is not Null And Is Not Empty sträng i SQL-servern?