Está en la página 1de 2

Buenas prcticas en la construccin de consultas SQL

No debe utilizar SELECT * ya que con esto lee primero toda la estructura de la tabla antes de ejecutar la
sentencia, adems que el resultado variar si se agrega o quitan campos.
Seleccionar solo aquellos campos que se necesiten, cada campo extra genera tiempo extra.
Escribir las consultas con estructura ANSI y NO con estructuras T-SQL
Dado lo anterior, para realizar las relaciones entre las tablas, se deben utilizar las instrucciones: INNER JOIN,
LEFT JOIN, RIGHT JOIN, CROSS JOIN
Si se utiliza varias tablas en la consulta, hay que especificar siempre a que tabla pertenece cada campo. Esto
ahorra al gestor el tiempo de localizar a que tabla pertenece el campo.
No utilizar frecuentemente la clusula LIKE, en el caso de utilizarla es recomendable realizar Like m% que
%m, por ejemplo, ya que en el primer caso, el plan de ejecucin de SQL determina y recorre el registro por el
ndice que contiene la tabla, siempre y cuando el ndice exista.
Utilizar en vez de la clusula IN la clusula BETWEEN, cuando sea posible en la instruccin WHERE.
Utilizar lo menos posible las clusulas ANY, SOME, IN (SELECT), NOT, IS NULL, != , <>, !>, !<,NOT EXISTS, NOT
IN, NOT LIKE, LIKE %ab.
No utilizar tablas temporales pblicas. En el caso que se utilicen tablas temporales locales en algn
procedimiento, estas siempre se deben eliminar al terminar de utilizarse en el procedimiento en cuestin, de
igual modo antes de crear alguna tabla temporal local, siempre se debe ver la opcin de utilizar variables
tipo tabla como prioridad.
Utilizar la instruccin TOP si necesita una cantidad limitada de filas.
La instruccin TOP nos devuelve la cantidad de filas que nosotros le especifiquemos.
Usar la clusula EXISTS en lugar de la clusula IN. La clusula EXISTS es ligeramente ms rpida.
Utilizar la clusula EXISTS en vez de la sentencia SELECT Count(*) FROM, esta prctica generalmente se
realiza con la instruccin IF.
La misin de la funcin EXIST en este caso es corroborar si existe o no X valor, por esta misma razn lo
optimo es hacerlo solo llamando un campo y haciendo un TOP 1 sobre la consulta anidada ya que de esta
manera no se pierde el sentido de la consulta porque el efecto ser el mismo. De esta manera hacemos que
la consulta sea mucho ms liviana.
Definir variables con el tipo de datos adecuados al dato a almacenar. Porque si no es as, podra haber
errores al almacenar algn dato, o al intentar hacer alguna operacin con el dato en cuestin.
Como buena prctica tambin se anima a incluir en el cdigo la instruccin SET NOCOUNT ON, ya que esta
instruccin evita que se devuelva el mensaje que muestra el recuento del nmero de filas afectadas por una
instruccin o un procedimiento almacenado como parte del conjunto de resultados. Si se establece SET
NOCOUNT en ON, no se devuelve el recuento. Cuando SET NOCOUNT es OFF, s se devuelve ese nmero.
No utilizar ejecuciones de cdigo DINAMICO, ya que con esta forma no se sabe si la sintaxis es correcta hasta
cuando se ejecutan los procesos, El Servidor tiene que compilar y luego ejecutar.
Utilizar CASE de tal modo de suplir la necesidad de usar cdigo dinmico. La sentencia CASE se utiliza para
brindar un tipo de lgica "si-entonces-otro" para SQL.
Ordenar el cdigo fuente del programa para mejorar la legibilidad por parte de los programadores.

Bibliografa:
http://eaaranguizb.blogspot.com/2013/02/tips-buenas-practicas-sql.html
http://www.slideshare.net/nnakasone/mejores-practicas-sql

Estoy de acuerdo compaero ha citado los puntos ms relevantes y creo que todos estamos de acuerdo sobre todo
en lo importante y simple que es especificar la tabla y no usar el SELECT *, ya que a mayor tamao de la base de
datos mayor ser el tiempo de respuesta.

Saludos

También podría gustarte