[SQL-Select] Porque no utilizar SELECT *.


Saludos amigos leyendo un libro de SQL 2008, me encontré con un párrafo muy interesante que creo les será de ayuda a las personas que empiezan con el desarrollo en TSQL, considero que no importa si es SQL 2000, 2005 o 2008.

El símbolo asterisco (*) devuelve todas las columnas para cada fila de tabla o vista en la que se consulta.

Recordemos que, como buena práctica, es mejor hacer referencia explícita a las columnas que deseemos recuperar en lugar de utilizar “SELECT *”.

Referencia explícita.

SELECT Id, Nombre, Apellidos FROM PRB_Usuario

Si desarrolla una aplicación que usa “SELECT *”, la aplicación pueden esperar las mismas columnas (en el mismo orden) de la consulta. Si más adelante se agrega una nueva columna a la tabla o vista, o si se reordenan las columnas de la tabla, se puede romper el llamando a la aplicación, ya que la nueva columna puede provocar un resultado inesperado.

Usar “SELECT *” también puede repercutir negativamente en:

  1. El rendimiento, ya que la consulta puede devolver más datos de los que se necesitan.
  2. El aumento del tamaño del conjunto de resultados y operaciones de recuperación de datos en la instancia de SQL Server.
  3. Para aplicaciones que requieren miles de transacciones por segundo, el número de columnas devueltas en el resultado puede tener un fuerte impacto.

En resumen use mejor: SELECT campo1, campo2, campo3 FROM TUTABLA

Evite usar: SELECT * FROM TUTABLA.

Espero les sea de ayuda, dejen comentarios.

Etiquetas de Technorati: ,

 

    • MiquelTGN
    • 19/07/09

    Otro razón un select * obliga al sistema a hacer dos consultas, la primera a information_schema.columns, donde resuelve el * por sus respectivas columnas y luego la consulta a la tabla final. Con lo que estamos haciendo trabajar el sistema mas de la cuenta.

    • psykrest
    • 21/07/09

    Gracias por tu comentario, espero que más personas sigan tu ejemplo. saludos.

    • Rodrigo
    • 9/10/15

    Muchas gracias man, me ayudaste a saber como traer columnas de forma unitaria en vez de todas las columnas xD! mi profe ya me había dicho que no debía ocupar select * pero de todas formas me ayudo mucho. Gracias man!

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: