Vamos agora a outro exemplo, no qual o nome do funcionário pesquisado está em dois blocos.
Ao solicitar todas as informações do funcionário Mauro (SELECT * FROM FUNCIONARIOS WHERE NOME = “Mauro”):
O SGBD iria primeiro identificar em qual bloco estão as informações do(s) funcionário(s) de nome Mauro.
A partir do índice, ele identificaria que é no bloco de número 3.
Ele iria ler de uma só vez as informações contidas no bloco 3, que consequentemente são as informações de quatro funcionários de nome Eduardo, Fábio, Felipe e Mauro.
O SGBD iria desprezar as informações dos três primeiros, mas antes de retornar os dados do funcionário de nome “Mauro”, sobrenome “Benvindo”, como se chegou ao fim do bloco com um valor verdadeiro para o resultado solicitado, o SGBD testaria o próximo bloco para saber se há outros funcionários de nome “Mauro” na sequência.
Como no bloco 4 há outro funcionário de nome “Mauro” (sobrenome “Lemos”), o SGBD continua agregando os dados desse funcionário até encontrar um funcionário de nome diferente (no caso é a funcionário de nome “Miriam”), desprezando os demais dados encontrados e concluindo assim a seleção de dados e retornando os dados ao usuário.
Resumindo em um passo a passo, o SGBD se comporta assim:
Há um funcionário de nome “Mauro” no índice?
Sim, há, os dados dela estão no bloco 3.
Leia todo o bloco 3.
O primeiro funcionário chama-se “Mauro”?
Não, então despreze os dados dele (Eduardo Martins).
O próximo funcionário chama-se “Mauro”?
Não, então despreze os dados dele (Fábio Lemos Maia).
O próximo funcionário chama-se “Mauro”?
Não, então despreze os dados dele (Felipe César).
O próximo funcionário chama-se “Mauro”?
Sim, então mantenha os dados dele em memória (Mauro Benvindo).
Chegamos ao fim do bloco, então leia o próximo bloco (bloco 4).
O primeiro funcionário desse bloco chama-se “Mauro”?
Sim, então mantenha os dados dele em memória (Mauro Lemos).
O próximo funcionário chama-se “Mauro”?
Não, então despreze os demais dados do bloco.
Retorne os dados mantidos em memória para o usuário.
Concluindo, o SGBD processa bloco por bloco e despreza as informações lidas que não são de interesse do usuário.
Alguns registros podem ser tão grandes que cada um deles ocupa mais de um bloco; dessa forma, o SGBD também é capaz de ler blocos em sequência recuperando todos os blocos com informações desejadas pelo usuário. Por exemplo, os dados completos de um único funcionário poderiam estar em 5 blocos.