Penjelasan sederhana, konseptual, non-database-spesifik:
Ketika panjang record maksimum yang mungkin diketahui sebelumnya, akhir record/awal record berikutnya dapat ditemukan dalam waktu yang konstan. Ini karena lokasi tersebut dapat dihitung menggunakan penambahan sederhana, sangat mirip dengan pengindeksan array. Bayangkan saya menggunakan int
s sebagai pointer ke record, dan ukuran record adalah konstanta integer yang didefinisikan di suatu tempat. Kemudian, untuk berpindah dari lokasi rekaman saat ini ke yang berikutnya:
int current_record = /* whatever */;
int next_record = current_record + FIXED_RECORD_SIZE;
Itu dia!
Atau, saat menggunakan record dan field yang diakhiri string (atau dibatasi), Anda dapat membayangkan bahwa field/record berikutnya ditemukan dengan pemindaian waktu-linear, yang harus melihat setiap karakter hingga pembatas ditemukan. Seperti sebelumnya,
char DELIMITER = ','; // or whatever
int current_record = /* whatever */;
int next_record = current_record;
while(character_at_location(next_record) != DELIMITER) {
next_record++;
}
Ini mungkin versi yang disederhanakan atau naif dari implementasi dunia nyata, tetapi gagasan umumnya masih berlaku:Anda tidak dapat dengan mudah melakukan operasi yang sama dalam waktu yang konstan, dan bahkan jika itu adalah waktu yang konstan, itu tidak mungkin secepat melakukan satu operasi penambahan.