Giải thích đơn giản, khái niệm, không dành riêng cho cơ sở dữ liệu:
Khi biết trước độ dài bản ghi tối đa có thể, có thể tìm thấy phần cuối của bản ghi / phần đầu của bản ghi tiếp theo trong thời gian không đổi. Điều này là do vị trí đó có thể tính toán được bằng cách sử dụng phép cộng đơn giản, rất giống với lập chỉ mục mảng. Hãy tưởng tượng rằng tôi đang sử dụng int
s là con trỏ đến các bản ghi và kích thước bản ghi là một hằng số nguyên được xác định ở đâu đó. Sau đó, để đi từ vị trí bản ghi hiện tại đến vị trí tiếp theo:
int current_record = /* whatever */;
int next_record = current_record + FIXED_RECORD_SIZE;
Vậy là xong!
Ngoài ra, khi sử dụng các bản ghi và trường được kết thúc bằng chuỗi (hoặc được phân tách bằng cách khác), bạn có thể tưởng tượng rằng trường / bản ghi tiếp theo được tìm thấy bằng cách quét theo thời gian tuyến tính, quá trình này phải xem xét mọi ký tự cho đến khi tìm thấy dấu phân cách. Như trước đây,
char DELIMITER = ','; // or whatever
int current_record = /* whatever */;
int next_record = current_record;
while(character_at_location(next_record) != DELIMITER) {
next_record++;
}
Đây có thể là một phiên bản đơn giản hoặc đơn giản của việc triển khai trong thế giới thực, nhưng ý tưởng chung vẫn là:bạn không thể dễ dàng thực hiện cùng một hoạt động trong thời gian liên tục và ngay cả khi đó là thời gian không đổi, nó không chắc sẽ nhanh bằng thực hiện một thao tác thêm.