Menu

Optimización de consultas

Marzo 28, 2012 - SQL Server

Introducción

Si bien en nuestra labor diaria no se nos especifica escribir consultas optimizadas para la base de datos (eso es problema del DBA) existen un par de consejos muy prácticos que nos ayudaran a sacar un mejor provecho de la SQL Server y hacer nuestras consultas mas eficientes con grandes cantidades de datos.

A manera de conocimiento general les dejo como se ejecutan las consultas en SQL Server para que lo tengan en cuenta a la hora de escribir las suyas.

Requerimientos

Manos a la obra!

  1. Podemos utilizar HINTS como por ejemplo READUNCOMMITED, claro está que se debe utilizar con cuidado ya que ésto nos puede traer problemas de lecturas sucias, fantasmas o no repetibles.
  2. Como podemos ver en la figura mostrada arriba lo primero que se efectúa en una consulta es el JOIN por tanto si podemos incluir allí una condición que tenemos en el WHERE mejor, ya que no tendrá que hacer el JOIN y luego aplicar otro filtro.
  3. No utilizar funciones escalares en el SELECT, ya que éstas funciones se aplican a nivel de fila, si es posible aplicar éstas funciones del lado del cliente o de la aplicación.
  4. No utilizar cursores, en mi experiencia  he podido evitar el uso de cursores utilizando un CTE al cual le agrego una columna autoincremental y haciendo un ciclo para leer uno a uno los registros de la tabla.
  5. Como conclusión de lo anterior preferir los CTE a tablas temporales o por lo menos usar variables tipo tabla ya que éstas se cargan en memoria y son eliminadas de manera automática (No hay que usar DROP)
  6. No utilizar CASE dentro del SELECT, aplica la misma regla 3.
  7. En lo posible usar lo menos posible un ORDER BY dentro de la consulta y dejarlo del lado del cliente o de la aplicación, ésta es una de las operaciones que más consume recursos en una consulta.
  8. No utilizar un SELECT *, y esto más que buena práctica debería ser regla.
  9. Las agrupaciones de ser posibles deben dejarse del lado de la aplicación (en el caso que estemos mostrando un reporte por ejemplo, Reporting Services puede agrupar los resultados)
  10. Dividir las consultas ayudara a que la mayoría de los datos carguen en memoria y no en disco lo cual es mas lento, por esto es mejor hacer consultas que no traigan muchos registros (100,000 por ejemplo) y operar con ellos.
  11. Promover el uso de EXISTS.

Conclusión

SQL Server es un motor de base de datos muy poderoso, sin embargo no puede hacer todo por nosotros. Tener estos pequeños consejos en cuenta a la hora de optimizar nuestras consultas es de gran valor y podemos evitarnos dolores de cabeza en el futuro.

Happy Coding!

4 pensamientos sobre “Optimización de consultas

  • Pingback: Optimización de consultas « DbRunas – Noticias y Recursos sobre Bases de Datos

  • Pingback: Buenas Practicas de Optimizacion a la Hora de realizar consultas SQL « GERARDO TATIS´ TEK BLOG

  • Pingback: Buenas Practicas de Optimizacion a la Hora de realizar consultas SQL « GERARDO TATIS´ TEK BLOG

  • Pingback: /*Prog*/ Delphi-Neftalí /*finProg*/ » Una quincena más… (11/04/2012)

  • Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *