Inicio > Sql Server 2005 - 2008, Transact-SQL > Varios Tips sobre la importancia de los INDICES – SQL Server

Varios Tips sobre la importancia de los INDICES – SQL Server


  La creación de índices útiles es uno de lo más importantes para lograr un mejor rendimiento en las consultas. Los índices útiles ayudan a encontrar los datos con menos operaciones de E/S de disco y un menor uso de los recursos del sistema.

Para crear índices útiles, debe comprender cómo se utilizan los datos, los tipos y las frecuencias de ejecución de las consultas y cómo el procesador de consultas puede utilizar los índices para encontrar los datos con rapidez.

Una vez elegidos los índices que creará, examine las consultas más importantes, cuyo rendimiento es el factor que más afecta a la experiencia del usuario. Cree los índices específicamente para ayudar a estas consultas. Luego de agregar un índice, vuelva a ejecutar la consulta para comprobar si el rendimiento ha mejorado. En caso negativo, quite el índice.

Al igual que en la mayoría de las técnicas de optimización del rendimiento, existen ventajas e desventajas. Por ejemplo, con más índices, es probable que las consultas SELECT se ejecuten con mayor rapidez. Pero hay que tener en cuenta que las operaciones DML (INSERT, UPDATE y DELETE) reducirán su velocidad porque se deben mantener más índices con cada operación. Entonces si las consultas son principalmente instrucciones SELECT, el uso de más índices puede ser positivo. Si su aplicación lleva a cabo muchas operaciones DML, el número de índices que cree debería ser más moderado.

En definitiva, puede mejorar el rendimiento de la aplicación SQL Server, optimizando las consultas que utiliza.

Evitar el indizado de tablas pequeñas

Una tabla pequeña es aquella cuyo contenido cabe en una o pocas páginas de datos. Evite crear índices a tablas muy pequeñas porque normalmente es más eficaz realizar una exploración de tablas. De este modo, se evita tener que cargar y procesar las páginas de índices. Si no crea un índice en las tablas muy pequeñas, está eliminando la posibilidad de que el optimizador seleccione una.

Clave primaria y externas

Es recomendable que siempre se cree índices en las claves principales. También suele ser muy útil crear índices en claves externas, puesto que tanto las claves principales como las externas se utilizan con frecuencia para combinar tablas.

Los índices de estas claves permiten al optimizador calcular los algoritmos de combinación de índices más eficaces.

Si la consulta combina tablas utilizando otras columnas, a menudo es útil crear índices en esas columnas por la misma razón. (Tener mucho cuidado al crear este tipo de índices).
 
Cuando se crean las restricciones de claves principales y externas, SQL Server  crea automáticamente índices para ellas y las utiliza para optimizar las consultas. Recuerde que es aconsejable crear claves principales y externas lo más pequeñas posible, ya que las combinaciones son más rápidas.

Índices con cláusulas de filtro

Los índices pueden utilizarse para acelerar la evaluación de ciertos tipos de cláusulas de filtro.

Si bien todas las cláusulas de filtro reducen el conjunto de resultados final de una consulta, algunas de ellas también ayudan a reducir la cantidad de datos que se deben explorar.

Un argumento de búsqueda (SARG) limita una búsqueda porque especifica la coincidencia exacta, un intervalo de valores o una conjunción de dos o más elementos combinados con AND. Presenta uno de los siguientes formatos:
•         Columna operador <constante o variable>
•         <constante o variable> operador Columna

Entre los operadores SARG se incluyen =, >, <, >=, <=, IN, BETWEEN y, en ocasiones, LIKE (en casos de coincidencia de prefijos, tales como LIKE ‘John%’). Un argumento SARG puede incluir varias condiciones combinadas con un AND. Los argumentos SARG pueden ser consultas que coinciden con un valor específico, por ejemplo:

•         “Customer ID” = ‘ANTON’
•         ‘Doe’ = “Last Name”

Un argumento SARG también puede ser una consulta que coincide con un intervalo de valores, por ejemplo:

•         “Order Date” > ‘1/1/2002’
•         “Customer ID” > ‘ABCDE’ AND “Customer ID” < ‘EDCBA’
•         “Customer ID” IN (‘ANTON’, ‘AROUT’)

Una expresión que no utilice operadores SARG no mejorará el rendimiento porque el procesador de consultas de SQL Server debe evaluar cada fila para determinar si cumple la cláusula de filtro. Por consiguiente, un índice no es de utilidad en expresiones que no utilizan operadores SARG. Entre los operadores que no son SARG se incluyen NOT, <>, NOT EXISTS, NOT IN, NOT LIKE y funciones intrínsecas.

Crear índices muy selectivos

Los índices en las columnas utilizadas en la cláusula WHERE de las consultas importantes normalmente mejoran el rendimiento. Sin embargo, esto depende del grado de selectividad del índice.

La selectividad es la proporción de filas resultantes respecto al total de filas. Si la proporción es baja, significa que el índice es muy selectivo, ya que puede deshacerse de la mayoría de las filas y reducir en gran medida el tamaño del conjunto de resultados. Por consiguiente, se trata de un índice muy útil. En cambio, un índice que no es selectivo no es tan útil.
Los índices únicos son los más selectivos. Sólo puede coincidir una fila, lo que es realmente útil para las consultas que pretenden exactamente devolver una fila. Por ejemplo, un índice en una sola columna de Id. servirá de ayuda para encontrar con rapidez una fila concreta.

  1. Aún no hay comentarios.
  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: