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

Rinde mejor: select campo1,campo2... que select * ?

Estas en el tema de Rinde mejor: select campo1,campo2... que select * ? en el foro de Bases de Datos General en Foros del Web. Leí en un artículo que en las selects aunque recogieramos todos los campos siempre era mejor hacerlas de forma select campo1,campo2,campo3 from tabla que select ...
  #1 (permalink)  
Antiguo 28/08/2006, 01:42
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 20 años, 1 mes
Puntos: 1
Rinde mejor: select campo1,campo2... que select * ?

Leí en un artículo que en las selects aunque recogieramos todos los campos siempre era mejor hacerlas de forma

select campo1,campo2,campo3 from tabla

que

select * from tabla

Por lo visto la primera ofrece un mejor rendimiento. Es verdad?

Gracias
__________________
Blog Hip Hop
  #2 (permalink)  
Antiguo 28/08/2006, 07:06
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 9 meses
Puntos: 3
es verdad, porque la primera consulta solo trae informacion de las columnas que necesitas.

quizas, en una maquina en la que la base de datos y la aplicacion se encuentren en el mismo lugar esta diferencia no se note. pero si la base de datos estuviese en otro ordenador, la segunda consulta consume mas ancho de banda.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #3 (permalink)  
Antiguo 28/08/2006, 07:42
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 4 meses
Puntos: 24
Depende de la cantidad de atributos de la tabla y de coo estan mapeados estos atributos en la base de datos.

es verdad, porque la primera consulta solo trae informacion de las columnas que necesitas.

Es una verdad a medias, ya que si la tabla tiene 3 atributos (campo1, campo2,campo3),. es lo mismo que hagamos select * from a que hagamos select campo1,campo2,campo3 from.
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #4 (permalink)  
Antiguo 28/08/2006, 07:59
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 9 meses
Puntos: 3
bueno, es cierto, Tolaware que tambien depende del numero de campos.

de todas formas creo que es un buen habito escribir siempre las consultas de la primera forma.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #5 (permalink)  
Antiguo 28/08/2006, 09:03
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 7 meses
Puntos: 25
Siempre es mejor. Incluído tanto el caso de que quieras todas las columnas como en el que quieras solo una parte de ellas.

Si usas un * el motor tiene que hacer una búsqueda adicional para sacar cuales son las columnas de la tabla para internamente agregar los campos, ejecutar la nueva consulta y entregarte los resultados.

Usar * se considera mala práctica pues además hace difícil el mantenimiento posterior.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #6 (permalink)  
Antiguo 31/08/2006, 06:01
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 4 meses
Puntos: 24
Cita:
Iniciado por Mithrandir Ver Mensaje
Siempre es mejor. Incluído tanto el caso de que quieras todas las columnas como en el que quieras solo una parte de ellas.

Si usas un * el motor tiene que hacer una búsqueda adicional para sacar cuales son las columnas de la tabla para internamente agregar los campos, ejecutar la nueva consulta y entregarte los resultados.

Usar * se considera mala práctica pues además hace difícil el mantenimiento posterior.
la consulta de los campos no la podes evitar.
Uno de los componentes de los DBMS, es el analizador de consultas que lo que hace es validar la consulta, y para ello necesita saber si los campos que se han ingresado son validos.

Coincido conque es una MUY mala practica. En al ingenieria de software, usar el * esta prohibido, que que si cambiamos atribuos de la tabal que consultamos con el *, la apicacion seguro falla, ya que espera un conjunto de campos especificos y nosotros lo hemos cambiado.
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #7 (permalink)  
Antiguo 31/08/2006, 11:51
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 7 meses
Puntos: 25
No necesariamente, por ejemplo los stored procedures quedan precompilados, de esa manera te ahorras el parseo de la misma sentencia una y otra vez.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #8 (permalink)  
Antiguo 31/08/2006, 12:44
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 7 meses
Puntos: 47
Hablando de que rinde mejor, ya que mencinan stored procedures surge otra interrogante pa mi, que rinde mejor, hacer una vista y hacerle un select a la misma, o el query generado por la vista meterlo en un procedure y ejecutarlo... supongo que el procedimiento es mas rapido que la vista
  #9 (permalink)  
Antiguo 31/08/2006, 15:39
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 9 meses
Puntos: 3
supongo que es filosofia informatica, pero tengo entendido que Oracle (por poner un ejemplo) utiliza algoritmos secretos y misteriosos para hacer que las vistas sean mas rapidas.

pero supongo que todo depende. es un misterio.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #10 (permalink)  
Antiguo 01/09/2006, 16:04
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 7 meses
Puntos: 25
Cita:
Iniciado por Developer9 Ver Mensaje
Hablando de que rinde mejor, ya que mencinan stored procedures surge otra interrogante pa mi, que rinde mejor, hacer una vista y hacerle un select a la misma, o el query generado por la vista meterlo en un procedure y ejecutarlo... supongo que el procedimiento es mas rapido que la vista
Cierto, dependerá mucho del manejador.

En mi opinión las vistas no ayudan mucho, salvo querys complejos (como los agrupados) y para la simplificación conceptual.

Aunque una vista bien definida (por ejemplo una con índices) y llamada desde un SP funcionará muy bien.

Eso si, me declaro SP-fan.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #11 (permalink)  
Antiguo 01/09/2006, 17:12
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 7 meses
Puntos: 47
Cita:
Iniciado por Mithrandir Ver Mensaje
Cierto, dependerá mucho del manejador.

En mi opinión las vistas no ayudan mucho, salvo querys complejos (como los agrupados) y para la simplificación conceptual.

Aunque una vista bien definida (por ejemplo una con índices) y llamada desde un SP funcionará muy bien.

Eso si, me declaro SP-fan.
LA unica ventaja que le veo es no hacer desde mi codigo de .net un query con joins sinó tan solo un select * from vista
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:05.