Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿Colocar límit en consulta?

Estas en el tema de ¿Colocar límit en consulta? en el foro de Mysql en Foros del Web. Hola buenas, Quisiera saber si es una buena práctica colocar LIMIT aun sabiendo el número de resultados que se obtendrán al realizar la consulta. Por ...
  #1 (permalink)  
Antiguo 20/09/2011, 01:28
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
¿Colocar límit en consulta?

Hola buenas,

Quisiera saber si es una buena práctica colocar LIMIT aun sabiendo el número de resultados que se obtendrán al realizar la consulta.

Por ejemplo, seleccionando un registro por su identificador.

Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #2 (permalink)  
Antiguo 20/09/2011, 16:22
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Respuesta: ¿Colocar límit en consulta?

El limit sirve cuando de una consulta que trae por ejemplo 100 registros, tu quieres mostrar menos y pueden ser los ultimos o primeros usando order by desc o asc. Si entiendo bien dices que sabes cuantos registros vas a traer cada vez no sirve de nada, sin embargo para ocasiones en que necesitas traer un numero exacto de registros por la razon que sea y la consulta por si sola con todas sus condiciones, joins, subconsultas, etc te trae mas resultados de los que quieres, se aplica lo del limit como para paginar registros (para mostrar de registros de 10 en 10 por ejemplo).
  #3 (permalink)  
Antiguo 20/09/2011, 23:49
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: ¿Colocar límit en consulta?

Hola buenas,

Gracias por tu respuesta.

El funcionamiento de Limit lo entiendo perfectamente. La duda esta más encaminada a optimización de sql, es decir, al igual que en una consulta select es mejor especificar los campos que se quieren consultar en lugar de consultar con *, quería saber si también es bueno colocar LIMIT 1 si se sabe que solo se va a obtener un registro, por ejemplo, por temas de reserva de memoria o similar.

Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #4 (permalink)  
Antiguo 21/09/2011, 04:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Colocar límit en consulta?

Normalmente no es buena práctica poner una cláusula innecesaria en una sentencia, porque terminan reduciendo la performance, ya que obligan al parser a realizar validaciones sin utilidad.
Por otro lado, poner un LIMIT 1 puede esconder los errores en la selección, porque siempre te devolverá 1 registro, y luego, si lo usas para otra cosa y sin esa cláusula comienzan los problemas.
Personalmente nunca entendí la lógica que usan los de phpMyadmin para crearte las sentencias incluyendo siempre esa cláusula.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/09/2011, 04:24
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: ¿Colocar límit en consulta?

Entonces cual es la conclusión? que no, verdad?
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #6 (permalink)  
Antiguo 21/09/2011, 06:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Colocar límit en consulta?

En mi opinión no. Te puede causar más problemas que las hipotéticas ventajas qe puedan existir.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 21/09/2011, 07:28
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: ¿Colocar límit en consulta?

De acuerdo,

Muchas gracias por tu ayuda.

La única "ventaja", es que nunca te devolverá más de un registro... y eso puede hacer que una aplicación sea un poco más segura.. o robusta..

Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #8 (permalink)  
Antiguo 21/09/2011, 08:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Colocar límit en consulta?

Cita:
La única "ventaja", es que nunca te devolverá más de un registro... y eso puede hacer que una aplicación sea un poco más segura.. o robusta..
Puede ser todo lo contrario, si lo que la consulta debe devolvers es más de un registro. Eso haría que el resultado pueda ser erróneo y genere colapsos en otros procesos por falta de integridad o consistencia, puede obtener registros equivocados (devuelve el primero según índices usados), y cuando luego la usas en volcados de datos masivos, los resultados pueden bien ser catastróficos.
LIMIT es una cláusula para usar si y sólo si la necesitas. No es un comodín inocuo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 21/09/2011, 08:19
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: ¿Colocar límit en consulta?

Me has convencido

Muchas gracias, explicación perfecta.

Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:19.