Considere pedir ao seu banco de dados uma lista dos primeiros 2.000 usuários cujos nomes começam com "Ab" e têm mais de 20 anos. Eles também devem ser do sexo masculino.
Aqui está um pequeno diagrama.
You Program Processor
------------------------------------------------------------------------------
Get the first 2000 users ---------->---------- OK!
--------------------- So I'll go get those records...
WAIT! Also, they have to ---------->---------- Gotcha!
start with "Ab"
--------------------- NOW I'll get them...
WAIT! Make sure they're ---------->---------- Good idea Boss!
over 20!
--------------------- Let's go then...
And one more thing! Make ---------->---------- Anything else? Ugh!
sure they're male!
No that is all. :( ---------->---------- FINE! Getting records!
--------------------- Here you go.
Thanks Postgres, you're ---------->---------- ...
my only friend.
Como você pode ver por essa terrível interação terrível, o "banco de dados" não está fazendo nada até estar pronto para lidar com todas as condições. É o carregamento lento dos resultados em cada etapa e a aplicação de novas condições a cada vez.
Ao contrário de obter os primeiros 2.000 usuários, devolvê-los, filtrá-los para "Ab", retorná-los, filtrá-los por mais de 20, devolvê-los e filtrar por homens e finalmente devolvê-los.
Carregamento preguiçoso em poucas palavras.