PROCESAMIENTO Y OPTIMIZACION DE CONSULTAS
Muchos administradores resuelven los problemas de rendimiento solamente ajustando el rendimiento del servidor en el sistema: por ejemplo, el tamaño de la memoria, el tipo del sistema de archivos, número y tipo de procesadores de impresión, etc. Sin embargo, muchos de los problemas de rendimiento no se pueden resolver de esta forma. Se deben solucionarmediante el análisis de las consultas y actualizaciones que la aplicación envía a la base de datos, y la forma en que estas consultas y actualizaciones de la aplicación interactúan con los datos y el esquema de la base de datos.
Optimización de consultas SQL
Uno de los temas más importantes en el desarrollo de cubos y reportes es el tiempo de procesamiento y ejecución. Cada día se necesitaprocesar mayor cantidad de datos y obtener de manera más rápida y precisa la información. Muchos de los problemas de rendimiento se deben entre otras cosas al hardware, al software, al motor de base de datos y por sobre todo al diseño, índices y mala formulación de consultas SQL. Algunas recomendaciones veremos que se puede mejorar el tiempo de respuesta de nuestro motor de BD significativamente.
Ala hora de diseñar la base de datos
Las tablas normalizadas permiten reducir al mínimo el espacio ocupado por nuestra base y permiten asegurar la consistencia de la información al mismo tiempo que son muy rápidas para la realización de transacciones, pero generan un mayor tiempo de demora a la hora de consultarlas ya que se deben realizar generalmente la unión de varias tablas, por lo que encaso de necesidad de altas velocidades de respuesta con grandes volúmenes de datos un modelo desnormalizado es más que conveniente teniendo en cuenta todas las implicancias del caso.
Ajustar al máximo el tamaño de los campos ayuda a no desperdiciar espacio.
Eliminar todo campo que no sea de utilidad ya que por más que no contenga datos genera retrasos.
Qué pasa con los índices
· Los índicesson campos que permiten la búsqueda a partir de dicho campo a una velocidad notablemente superior. Sin embargo cuentan con la desventaja que hacen más lenta la actualización, carga y eliminación de los registros ya que por cada modificación en la tabla se deberá modificar también el índice, además se debe tener en cuenta el hecho de que los índices también ocupan espacio en disco. Es por esto queno es factible indexar todos los campos de la base y se hace necesario seleccionarlos cuidadosamente. Cabe destacar que por defecto las tablas no contienen índices por lo que la introducción de estos puede llegar a producir mejoras de más del 100% en algunos casos.
Los campos que se recomiendan indexar son:
o Claves Primarias
o Claves Foráneas
o Campos por los cuales se realizaranbúsquedas
o Campos por los cuales se va a ordenar
Siempre conviene indexar tablas con gran cantidad de registros y que van a ser consultadas intensamente.
Donde escribir las sentencias
Siempre es preferible utilizar consultas almacenadas dentro del motor de base de datos y no dentro de la aplicación, una consulta almacenada en un procedimiento almacenado por ejemplo, se ejecuta mucho más rápido.Muchas de las aplicaciones sobre todo de reporting permiten unir y realizar los joins y consultas directamente en la herramienta produciendo una baja de performance realmente considerable. Lo correcto y más eficiente seria generar la consulta en un sp con todos los joins y guardar el resultado en una tabla temporal, de donde posteriormente el reporte solo deberá mostrar los datos sin necesidad detrabajarlos primero.
Acerca de la formulación de las consultas:
A la hora de ejecutar una consulta SQL la forma en que esta es expresada afecta directamente al motor de BD, pequeños cambios pueden significar la ganancia de muchos segundos o minutos que el usuario debe esperar al momento de ejecutar la consulta. Algunas recomendaciones son:
No utilizar SELECT * por que el motor debe leer...
Regístrate para leer el documento completo.