prueba
Tanto por cantidad como por complejidad, la mayoría de las optimizaciones deben hacerse sobre
sentencias SELECT, ya que son (por regla general) las responsables de la mayor pérdida de tiempos.
Algunas normas basicas para optimizar las sentencias SQL:
Las tabla a consultar siempre (en la medida que se pueda) deben de tener Primary Key (llave
primaria),debido a que esto creara un indice por el cual se puede optimizar la sentencia.
Los filtros (where) utilizados en la consulta siempre deben de ir en el mismo orden en el que se
han declarado las columnas en nuestro indice (index), siempre es bueno ver las condiciones que
se utilizaran con el fin de definir los indices que se han de utilizar en determinada tabla.
Si una aplicación quefuncionaba rápido, se vuelve lenta, hay que parar y analizar los factores
que han podido cambiar. Si el rendimiento se degrada con el tiempo, es posible que sea un
problema de volumen de datos, y sean necesarios nuevos índices para acelerar las búsquedas.
En otras ocasiones, añadir un índice equivocado puede ralentizar ciertas búsquedas. Cuantos
más índices tenga una tabla, más se tardará enrealizar inserciones y actualizaciones sobre la
tabla, aunque más rápidas serán las consultas. Hay que buscar un equilibrio entre el número de
índices y su efectividad, de tal modo que creemos el menos número posible, pero sean
utilizados el mayor número de veces posible.
Las consultas más utilizadas deben encapsularse en procedimientos almacenados. Esto es
debido a que el procedimientoalmacenado se compila y analiza una sola vez, mientras que una
consulta SQL lanzado a la base de datos debe ser analizado, optimizado y compilado cada vez
que se lanza.
Los filtros de las consultas deben ser lo más específicos y concretos posibles. Es decir: es
mucho más específico poner WHERE campo = 'a' que WHERE campo LIKE '%a%'. Es muy
recomendable utilizar siempre consultas que filtren porla clave primaria u otros campos
indexados.
Cuando se hace una consulta multi-tabla, el orden en que se ponen las tablas en el FROM
influye en el plan de ejecución. Aquellas tablas que retornan más filas deben ir en las primeras
posiciones, mientras que las tablas con pocas filas deben situarse al final de la lista de tablas.
La mejor optimización es rediseñar y normalizar la base dedatos. Las bases de datos
relacionales están diseñadas para funcionar lo más rápidamente posible para un buen diseño
relacional, pero con diseños erróneos, se vuelven muy lentas. La mayoría de los problemas de
rendimiento tienen un problema de fondo de mal diseño, y muchos de ellos no podrán ser
optimizados si no se rediseña el esquema de base de datos.
Agregar más memoria. Esta solución esespecialmente útil si el servidor ejecuta muchas
consultas complejas y varias consultas se ejecutan lentamente.
Utilizar más de un procesador. Varios procesadores permiten que el Motor de base de datos use
consultas en paralelo. Para obtener más información, vea Procesar una consulta en paralelo.
1
Al escribir la consulta, considere lo siguiente (Recomendaciones oficiales):
Si unaaplicación utiliza un bucle, considere la posibilidad de colocar el bucle en la
consulta. A menudo, una aplicación contendrá un bucle que, a su vez, contendrá una
consulta con parámetros que se ejecuta muchas veces y será necesario realizar un viaje
de ida y vuelta en la red entre el equipo que ejecuta la aplicación y SQL Server. En su
lugar, cree una sola consulta más compleja con una tablatemporal. Sólo necesita un
viaje de ida y vuelta en la red, y el optimizador de consultas puede optimizar mejor la
consulta única. Para obtener más información, vea Procedimientos de Transact-SQL y
Variables de Transact-SQL.
No utilice varios alias para una sola tabla en la misma consulta para simular la
intersección de índices. Ya no es necesario debido a que SQL Server tiene en cuenta...
Regístrate para leer el documento completo.