Máster Online en Business Intelligence certificado por SolidQ

Si te interesa esta información, y estás dispuesto a convertirte en un profesional altamente cualificado en el área de Business Intelligence con las herramientas de Microsoft, te recomiendo que estudies con detalle la información sobre el Máster Online en Business Intelligence certificado por SolidQ, no dejes pasar esta oportunidad. Recuerda que el área de Business Intelligence, es de las pocas en las que no hay paro en este momento y según las consultoras internacionales más prestigiosas tendrá un crecimiento cercano al 10% anual en los próximos años.

12/11/2009

No más "SELECT *..." en mis tablas

Creo que a estas alturas todo desarrolladoR ha oído y leído que es una mala práctica utilizar la sintaxis SQL SELECT * FROM. Por un lado nos encontramos con que el gestor de bases de datos debe obtener de los metadatos cuáles son las columnas que debe devolver, que aunque no sea una gran penalización, también afecta al rendimiento. Por otro lado nos encontramos con que la adición de una nueva columna a una tabla puede suponer que dejen de funcionar muchas consultas e informes que no se ven afectados por dicho cambio, al recibir la aplicación más columnas de las esperadas.

Bien, pues todos admitimos que no es una buena práctica, pero la seguimos llevando a cabo. No paro de encontrar servidores donde se siguen ejecutando una gran cantidad de las instrucciones que usan el asterisco " * ". Unas veces por pereza, otras por hábito, otras por ... El caso es que ahí está esa mala práctica, tan admitida como utilizada.

Pues bien, es hora de ponernos firmes y evitar este uso, si de verdad estáis decididos a hacerlo, aquí os dejo un script que impide el uso de la sintaxis SQL del SELECT * FROM. Esto es posible gracias al uso de:

DENY SELECT ON OBJECT:: TuEsquema.TuTabla(DummyColumn) TO Usuario;

Tened en cuenta que restringe también el uso del count(*), pero eso tiene solución fácil podéis utilizar count(Columna), pero es importante que conozcáis los matices de una y otra variante y el resultado diferente que se puede obtener en caso de haber nulos, cosa que podéis solucionar utilizando una columna que sea primary key, y que por tanto no admitirá nulos :)

Os recomiendo que leáis con detalle el artículo Preventing usage of "SELECT * ...", y sobre todo que lo pongáis en práctica.

Google
 

SQL Server Business Intelligence

Información sobre ETL, Data Warehousing, OLAP, BI. Integration Services, Analysis Services, Reporting Services ... SQL Server 2008, Seguridad, Backup, Replicación ... Videos, webcasts ...