Forenklet, konceptuel, ikke-databasespecifik forklaring:
Når den maksimalt mulige postlængde er kendt på forhånd, kan slutningen af posten/begyndelsen af den næste post findes i konstant tid. Dette skyldes, at denne placering kan beregnes ved hjælp af simpel tilføjelse, meget analogt med array-indeksering. Forestil dig, at jeg bruger int
s som pointere til poster, og at poststørrelsen er en heltalskonstant defineret et sted. Derefter for at komme fra den aktuelle registreringsplacering til den næste:
int current_record = /* whatever */;
int next_record = current_record + FIXED_RECORD_SIZE;
Det var det!
Alternativt, når du bruger strengterminerede (eller på anden måde afgrænsede) poster og felter, kan du forestille dig, at det næste felt/post findes ved en lineær tidsscanning, som skal se på hvert tegn, indtil afgrænsningstegnet er fundet. Som før,
char DELIMITER = ','; // or whatever
int current_record = /* whatever */;
int next_record = current_record;
while(character_at_location(next_record) != DELIMITER) {
next_record++;
}
Dette kan være en forenklet eller naiv version af implementeringen i den virkelige verden, men den generelle idé består stadig:du kan ikke nemt udføre den samme operation i konstant tid, og selvom det var konstant tid, er det usandsynligt, at det vil være så hurtigt som udfører en enkelt tilføjelsesoperation.