Considere pedirle a su base de datos una lista de los primeros 2000 usuarios cuyos nombres comienzan con "Ab" y son mayores de 20 años. También deben ser hombres.
Aquí hay un pequeño 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 puede ver en esta interacción terrible, la "base de datos" no está haciendo nada hasta que esté lista para manejar todas las condiciones. Son resultados de carga lenta en cada paso y la aplicación de nuevas condiciones cada vez.
En lugar de obtener los primeros 2000 usuarios, devolverlos, filtrarlos por "Ab", devolverlos, filtrarlos por más de 20, devolverlos y filtrar por hombres y finalmente devolverlos.
Carga perezosa en pocas palabras.