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.