Explicación simplificada, conceptual, no específica de la base de datos:
Cuando se conoce de antemano la longitud máxima posible del registro, el final del registro/el comienzo del siguiente registro se puede encontrar en tiempo constante. Esto se debe a que esa ubicación se puede calcular mediante una suma simple, muy similar a la indexación de matrices. Imagina que estoy usando int
s como punteros a registros, y que el tamaño del registro es una constante entera definida en alguna parte. Luego, para pasar de la ubicación del registro actual a la siguiente:
int current_record = /* whatever */;
int next_record = current_record + FIXED_RECORD_SIZE;
¡Eso es!
Alternativamente, al usar registros y campos terminados en cadena (o delimitados de otro modo), puede imaginar que el siguiente campo/registro se encuentra mediante un escaneo de tiempo lineal, que tiene que mirar cada carácter hasta que se encuentra el delimitador. Como antes,
char DELIMITER = ','; // or whatever
int current_record = /* whatever */;
int next_record = current_record;
while(character_at_location(next_record) != DELIMITER) {
next_record++;
}
Esta podría ser una versión simplificada o ingenua de la implementación del mundo real, pero la idea general sigue en pie:no puede hacer fácilmente la misma operación en tiempo constante, e incluso si fuera en tiempo constante, es poco probable que sea tan rápido como realizando una sola operación de adición.