13/05/2015, 11:56
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años Puntos: 2658 | |
Respuesta: consulta con limit es muy lenta Perdona que te lo diga así, pero tu duda carece de sentido. parece que no estás entendiendo como funciona el LIMIT, ni tampoco como opera el WHERE.
El LIMI aplica sobre el resultado final, es decir, sólo sobre los registros que cumplen con el WHERE, sin otras consideraciones. Esto último implica que el LIMIT sólo puede devovler los registros que NO están marcados como eliminados, y sólo cuenta ESOS.
Es imporsible para el LIMIT contar aquellos registros marcados como eliminados, porque la consulta NO LOS DEVUELVE. Es como si NO EXISTIERAN.
En los hechos, sólo podría devolverte en la segunda página un registro que muestra en la primera, si y sólo si en el interín entre ambas consutlas, alguien quitó la marca de eliminado de un registro que debía aparecer en el primer bloque. El corrimiento generado hacia adelante podría mover un registro de la primera a la segunda pagina, pero solo en ese contexto.
AL igual que en ese caso, si en el interín, otro usuario marca como eliminado un registro que aparecía en la primera página, se generará en la segunda ejecución un corrimietno igual hacia atrás, no mostrando un registro que antes era válido.
Este tipo de situaciones no son sencillas de resolver, pero sólo se producen en este contexto, y suelen ocurrir en sistemas concurrentes. Para evitarlos hay ciertas técnicas, como por ejemplo, tomar el mayor id recuperado del primer bloque y enviar a buscar los siguientes X registros posteriores a ese.
En estos casos, si, efectivamentye, la consulta necesita ser creada deforma dinámica, para agregar o quitar condiciones, según se necesite.
Pero la base de la query, no cambia.
¿Se entiende?
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |