Optimizacion de querys

Solo disponible en BuenasTareas
  • Páginas : 19 (4602 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de marzo de 2010
Leer documento completo
Vista previa del texto
Universidad de San Carlos de Guatemala Facultad de Ingeniería Escuela de Ciencias y Sistemas

Optimizacion de Querys
Descripción: Para poder escribir query en SQL exige un ejercicio constante en ser capaz de crear querys relacionales “elegantes”. Por lo general estos últimos dan mucho mejores resultados, esto tiene como background una base de datos correctamente relacionada, y por ultimo siestas querys se pueden optimizar seria la mejor practica, ya que reduciría tiempo y aumentaría ganancias.

Nombre: Alejandra Molina Carné: 200512089

Guatemala, Diciembre de 2008

Universidad de San Carlos de Guatemala Facultad de Ingeniería Escuela de Ciencias y Sistemas

INTRODUCCION

El propósito de este documento es describir las diferentes formas de mejorar el rendimiento deconsultas o querys. La mayor parte de este documento se describe el índice de optimización, con referencias ocasionales a determinados fragmentos de código. En otras palabras, este documento se describe cómo obtener el mejor rendimiento, habida cuenta de las tablas y consultas.

Para poder escribir query en SQL exige un ejercicio constante en ser capaz de crear querys relacionales “elegantes”. Por logeneral estos últimos dan mucho mejores resultados, esto tiene como background una base de datos correctamente relacionada, y por ultimo si estas querys se pueden optimizar seria la mejor practica, ya que reduciría tiempo y aumentaría ganancias.

Diseño de bases de datos y cuestiones de entidad-relación de técnicas de modelado aunque se toca brevemente, ya que también errores en el diseño puedenafectan el rendimiento de muchas maneras.

Universidad de San Carlos de Guatemala Facultad de Ingeniería Escuela de Ciencias y Sistemas

MARCO TEORICO
El lenguaje SQL es no procedimental, es decir, en las sentencias se indica que queremos conseguir y no como lo tiene que hacer el interprete para conseguirlo. Esto es pura teoría, pues en la práctica a todos los gestores de SQL hay queespecificar sus propios truquitos para optimizar el rendimiento. Por tanto, muchas veces no basta con especificar una sentencia SQL correcta, sino que además, hay que indicarle como tiene que hacerlo si queremos que el tiempo de respuesta sea el mínimo. En este apartado veremos como mejorar el tiempo de respuesta de nuestro intérprete ante unas determinadas situaciones:

1. Diseño de las tablas


•• •

Normaliza las tablas, al menos hasta la tercera forma normal, para asegurar que no hay duplicidad de datos y se aprovecha al máximo el almacenamiento en las tablas. Si hay que desnormalizar alguna tabla piensa en la ocupación y en el rendimiento antes de proceder. Los primeros campos de cada tabla deben ser aquellos campos requeridos y dentro de los requeridos primero se definen los delongitud fija y después los de longitud variable. Ajusta al máximo el tamaño de los campos para no desperdiciar espacio. Es muy habitual dejar un campo de texto para observaciones en las tablas. Si este campo se va a utilizar con poca frecuencia o si se ha definido con gran tamaño, por si acaso, es mejor crear una nueva tabla que contenga la clave primaria de la primera y el campo paraobservaciones.

2. Campos a Seleccionar


• • •

En la medida de lo posible hay que evitar que las sentencias SQL estén embebidas dentro del código de la aplicación. Es mucho más eficaz usar vistas o procedimientos almacenados por que el gestor los guarda compilados. Si se trata de una sentencia embebida el gestor debe compilarla antes de ejecutarla. Seleccionar exclusivamente aquellos que senecesiten No utilizar nunca SELECT * por que el gestor debe leer primero la estructura de la tabla antes de ejecutar la sentencia Si utilizas varias tablas en la consulta especifica siempre a que tabla pertenece cada campo, le ahorras al gestor el tiempo de localizar a que tabla pertenece el campo. En lugar de SELECT Nombre, Factura FROM Clientes, Facturacion WHERE IdCliente = IdClienteFacturado, usa:...
tracking img