SQL Server: Optimización de consultas

SQL Server: Optimización de consultas

En el siguiente Blog te presentamos diferentes técnicas de optimización de consultas en SQL Server que de seguro te resultarán ser muy útiles.

SQL Server se convirtió en el lenguaje estándar de las bases de datos «relacionales» y la mayoría productos DBMS (DataBase Management System) del mercado lo manejan en la actualidad.

Esta estructura de lenguaje ayuda a solucionar problemas específicos o relacionados con la definición, manipulación e integridad de la información representada por los datos que se almacenan en las bases de datos. Para su óptimo desempeño te daremos una serie de consejos y trucos que siempre debes tener presente siempre que realices consultas:

  • Usar nombres apropiados:

Esto Ayuda a saber con qué se está trabajando solamente viendo el nombre, así se ahorra tiempo y esfuerzo. Además, Añadir al nombre de la tabla el propietario y el esquema hará más rápida nuestra consulta, Si no lo ponemos SQL-Server buscará en todos los esquemas hasta encontrar el objeto.

  • Usar count (1) en lugar de count (*):

Aunque hay muchas personas que afirman que no hay diferencia si se usa uno o el otro, la realidad es otra: si se usa en una base de datos grande, en lugar de tomar en consideración todas las columnas de una tabla para hacer el cálculo, solo toma la primera columna. Esto hace que la base de datos utilice menos recursos y, por consecuencia, ejecute más rápido.

  • NOT EXISTS en lugar de NOT IN:

En el caso que tengamos que hacer uso del comando NOT IN tendremos que tener especial cuidado en su uso ya que posee un mal rendimiento ya que obliga al SQL Server Optmizer a realizar un SCAN, en su lugar pude usar NOT EXISTS ya que posee un mejor rendimiento.

  • Utilizar la cláusula SET NOCOUNT ON:

SQL-Server siempre devuelve la cuenta del número de filas afectado por las consultas de INSERT, DELETE, UPDATE y SELECT. Utilizar esta cláusula evitara esto y ahorra memoria y tiempo.

  • Tablas temporales:

SQL Server provee la manera de crear tablas temporales dentro de la sesión del usuario. Estas tablas son útiles para almacenar información que será utilizadas en múltiples ocasiones, Estas tablas están disponibles bajo la sesión del usuario que las cree y serán destruidas una vez esa sesión termine. Ten presente no usar variables de tipo table en los joins de las consultas, una tabla temporal o una expresión de tabla común (CTE) te darán un mejor rendimiento.

  • No utilices las cláusulas Distinct, Group By y Order By si no es indispensable:

Estas sentencias consumen mucha memoria y generan una gran cantidad de trabajo extra a SQL Server debido a que consume muchos recursos que son necesarios para otras QUERIES que sean lanzadas dentro de la base de datos. Sólo se deben usar si es necesario.

  • No usar el comando GROUP BY sin una función de agregación:

Este comando puede ejecutarse sin o con una función de agregación, pero si queremos obtener un mejor rendimiento, no usaremos la cláusula GROUP BY sin una función de agregación.

  • DERIVED TABLES en lugar de TEMPORARY TABLES:

Dependiendo de nuestra consulta podemos usar tablas derivadas, ya que con este tipo de tablas mejoramos el rendimiento de nuestra QUERY ya que se producen menos operaciones de I/O sobre el servidor.

  • Uso de índices:

Los motores de bases de datos SQL pueden agregar índices a ciertas columnas que aceleran las QUERIES. El uso correcto de índices puede acelerar consultas en tablas con muchos registros, pero sobre todo, el mal uso de ellos puedes traducirse en consultas muy lentas que afectan el rendimiento de la página.

  • Uso de la secuencia SET NOCOUNT ON:

SQL-Server siempre devuelve la cuenta del número de filas afectado por las consultas de INSERT, DELETE, UPDATE y SELECT. Utilizar la cláusula SET NOCOUNT ON evitará esto ahorrando memoria y tiempo. En una consulta simple apenas se nota, pero en consultas con muchos joins o subconsultas ahorra mucho tiempo.

  • Devolver los datos que se necesiten:

Un aspecto que siempre se menciona en todos los libros de SQL es que debemos devolver nada más que los datos que se necesitan, y esto sobre todo referido a las columnas de datos. Debemos evitar el uso de SELECT * ya que esto además de devolver más datos de los que seguramente necesitemos, impide el uso de índices, añadiendo mayor degradación al rendimiento del sistema.

Los anteriores fueron unos trucos básicos que esperamos ayuden a mejorar y optimizar tus consultas. 

Si necesitas ayuda, contáctanos.

cerrar