SlideShare una empresa de Scribd logo
1 de 29
Procesamiento y Optimización
de Consultas SQL
    Universidad Mariano Gálvez De Guatemala

    Grupo 4

    Eduardo Otoniel Tumax Sulecio
    Sergio Aníbal Argueta Paredes
    Álvaro Antonio Álvarez
    Juan Diego Hurtarte Hicho
¿Cómo se resuelven las consultas?
      Usuario            Da
                            to  sR
                                  es
                                    pu
                                      es
                                         ta

      Parser




     Optimizador




    Generador De   Procesador                 Datos
      Código       Del DBMS
Estrategias usuales de los
            optimizadores

●    Proceso detallado de Optimización.

●    Optimización Heurística

     Basada en equivalencia de las expresión del álgebra y ciertas
    estrategias básicas para limitar el tamaño de los resultados


●    Optimización Sql

Basada en estimaciones y datos del catálogo que permiten
   seleccionar un mejor plan de acceso.
Proceso de Optimización
                  Generador
    Parser        De Código



  Traductor
   Algebra        Procesador
  Relacional      Del DBMS




 Generador de   Generador De
   Planes          Planes
   Logicos       Especificos
Conceptos
●   Generación del Algebra (Árbol Canónico)
•   Arbol de una expresión relacional
•   Representación de un query en SQL previo a su optimización
•   las hojas representan las relaciones de entrada
•   los nodos internos representan operadores del álgebra relacional
•   su ejecución supone que los operadores se aplicarán tan pronto como sus
    operandos estén disponibles, sustituyendo el nodo por la relación resultante
•   la ejecución termina al aplicarse el operador representado por el nodo raíz
●   Generación de planes lógicos (Optimización Heurística)

    Implica la aplicación de determinadas estrategias (heurísticas) y consultas
    al catálogo para tamaños de las relaciones para transformar el árbol
    original.
Ejemplo 1
Resolver esta consulta sobre las tablas:
 –empleados(nombre,edad,salario,depto)
 –
   departamentos(nroD,nombreD,piso,gerente)
Arbol De Consulta
• Arbol de consulta que es una estructura de árbol
  que corresponde a una expresión del álgebra
  relacional en el que las tablas se representan
  como nodos hojas y las operaciones del álgebra
  relacional como nodos intermedios.
Arbol De Consulta
•   Por ejemplo, para la consulta:
    SELECT numerop, numd, apellido, dirección, fechan
    FROM proyecto, departamento, empleado
    WHERE numd=numerod AND nssgte=nss AND
    lugarp='Santiago';
    un árbol de consulta sería:
Traducción a SQL
•   Una funcionalidad importante implementada ha sido la
    traducción de las consultas a SQL. Una vez más gracias al
    diseño de las clases encargadas de gestionar los árboles, ha
    bastado con recorrerlos implementando métodos capaces de
    traducir cada una de las operaciones del álgebra relacional a
    su equivalente en SQL. También se ha abordado el tema de
    la creación de vistas puesto que es una parte importante en
    la formación que el alumno recibe en la asignatura de
    Ficheros y Bases de Datos y dependiendo de la complejidad
    de las consultas ayuda al usuario a aclararse durante su
    estudio.
Traducción de consultas
SQL a Álgebra Relacional
 Bloque de consulta

 – Una única expresión select-from-where
 incluyendo group-by, order-by, having y
 los operadores (max, min, count, avg y
 sum)
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 necesita procesar 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.
A la 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.

    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.
Que pasa con los índices
 •   Los índices son campos que permiten la búsqueda a partir de dicho campo a una
     velocidad notablemente superior.
 •   Los campos que se recomiendan indexar son:


 •   o   Claves Primarias
 •   o   Claves Foráneas
 •   o   Campos por los cuales se realizaran bú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.
Indexación
Acerca de la formulación de la 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
            primero la estructura de la tabla antes de ejecutar la
            sentencia.

        •   Seleccionar solo aquellos campos que se necesiten,
            cada campo extra genera tiempo extra.
Acerca de la formulación de la consultas:
      •   Utilizar Inner Join , left join , right join, para unir las tablas
          en lugar del where, esto permite que a medida que se
          declaran las tablas se vallan uniendo mientras que si
          utilizamos el where el motor genera primero el producto
          cartesiano de todos los registros de las tablas para luego
          filtrar las correctas, un trabajo definitivamente lento.

      •   Especificar el alias de la tabla delante de cada campo
          definido en el select, esto le ahorra tiempo al motor de
          tener que buscar a que tabla pertenece el campo
          especificado.

      •   Evitar el uso de Cast. Y formulas dentro de las consultas,
          cada      formula  y     casteo    retrasan    el   motor
          considerablemente.
      •   Select CAST(goles as varchar(30))
      •   from jugadores
      •   where id = 100
Optimización de Consultas SQL


    EMPAREJAMIENTOS EN WHERE VS.
     EMPAREJAMIENTOS EN EL FROM

      ORDEN DE PROCESAMIENTO DE UNA
       CONSULTA MULTITABLA

    COMPOSICIONES EXTERNAS (EN EL WHERE
     Y EN EL FROM)

    QUERY PERFORMANCE
COMPOSICIONES EN EL WHERE VS.
  COMPOSICIONES EN EL FROM
  •   Debido al orden de procesamiento de una consulta multitabla el
      motor de BD se ve beneficiado si las composiciones son
      realizadas en el FROMa través de INNER JOIN o alguna de sus
      variantes (LEFT OUTER JOIN, RIGHT OUTER JOIN). Esto se
      debe a que el motor al procesar una consulta SQL lo hace en
      este orden:

  •   Realiza el producto cartesiano de las tablas en el FROM
  •   Si existe cláusula WHERE aplica la condición de
      búsqueda
  •   Para las filas restantes calcula el valor de cada elemento
      en la lista del SELECT
  •   Si existe un SELECT DISTINCT elimina las filas
      duplicadas
  •   Si existe un ORDER BY ordena el resultado
Si nosotros realizamos la composición directamente en el
FROM evitamos utilizar la cláusula WHERE



• SELECT F.numFactura,C.
  CliNom, F.Monto
•          FROM Factura F
  INNER JOIN Cliente C ON
  F.codcli=C.codcli
Si nuestra composición entre tablas requiere más de un
campo y más de dos tablas la sintaxis sería la siguiente:


• SELECT F.numFactura, C.cliNom, F.Monto,
  V.venNom
• FROM Factura F INNER JOIN Cliente C ON
  F.tipoDoc=C.tipoDoc
  AND F.numDoc=C.numDoc INNER JOIN
  Vendedor ON F.codVen=V.codVen
COMPOSICIONES EXTERNAS
      •   Al realizar composiciones internas o INNER JOIN
          entre dos tablas, los registros que no se
          correspondan en ambas tablas son eliminados de la
          lista de resultados, si yo no deseo que se eliminen
          los registros de una o ambas tablas aunque queden
          desemparejados debo realizar composiciones
          externas. Por ejemplo:
Al realizar una composición externa podría recuperar
  todo el conjunto de resultados, las composiciones
 externas dependen del orden en el que se listen las
                        tablas:


• SELECT TC.Coche, TM.marca
• FROM TCOCHES TC RIGHT
  OUTER JOIN TMARCAS TM ON
  TC.marca=TM.codigo
QUERY PERFORMANCE

•   Buenas prácticas para mejorar nuestras consultas SQL
•   Realizar las composiciones en el FROM
•   Tener en cuenta el orden en el que enunciamos las
    tablas en el FROM
•   Uso de funciones de T-SQL
•   Evitar el uso de SELECT *
•   Evitar el SELECT DISTINCT y el ORDER BY
•   Estas fueron unas breves recomendaciones a tener en
    cuenta a la hora de generar nuestras sentencias SQL,
    más adelante seguiremos con este tema, por ejemplo
    el uso de subconsultas, consultas en el FROM, uso de
    IF y CASE para condiciones, etc. las cuales son
    fundamentales a la hora de realizar nuestros procesos
    ETL.
Optimización por Heurísticas
   •       Cambiar la consulta original por otra equivalente de
   •       forma de minimizar los resultados intermedios.

       ●     Pueden existir varias alternativas.
       ●     Se basa en aplicar equivalencias de los operadores del álgebra
              de forma que:
   •       1. Las selecciones se apliquen lo antes posible.
   •       2. Las ramas izquierdas de los join sean más chicas que las
           derechas.
Optimización Heurística
     Aplicación de reglas de transformación y
     heurísticas para modificar la representación
     interna de una consulta (Álgebra Relacional o
     Árbol de consulta) a fin de mejorar su
     rendimiento

   • Varias expresiones del Álgebra Relacional pueden
     corresponder a la misma consulta

   • Lenguajes de consulta, como SQL permiten
     expresar una misma consulta de muchas formas
     diferentes, pero el rendimiento no debe depender
     de cómo sea expresada la consulta
• El Analizador Sintáctico genera árbol de consulta
  inicial
    – sin optimización  ejecución ineficiente

• El Optimizador de Consultas transforma el árbol de
  consulta inicial en árbol de consulta final equivalente
  y eficiente
    Aplicación de reglas de transformación
        guiadas por reglas heurísticas

Conversión de la consulta en su forma canónica
 equivalente
El Optimizador tiene un conjunto de
técnicas para realizar cada operación
    –   Ejemplo: técnicas para implementar la operación de Restricción σ
    –   Búsqueda Lineal
    –   Búsqueda Binaria
    –   Empleo de Índice Primario o Clave de Dispersión
    –   Empleo de Índice de Agrupamiento
    –   Empleo de Índice Secundario


  • ¿Cómo elige el Optimizador las técnicas
    adecuadas en cada caso?
Optimización

Información                 Información sobre la interdependencia
Estadística                   entre las operaciones de bajo nivel
(diccionario de datos)



                         OPTIMIZADOR


        Elección de varias técnicas
        candidatas para cada operación
Ejemplo de optimización heurística

Más contenido relacionado

La actualidad más candente

Distribución y fragmentación de datos
Distribución y fragmentación  de datosDistribución y fragmentación  de datos
Distribución y fragmentación de datosJosé Mendoza
 
Implementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlImplementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlPipe Muñoz
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Balanceo De Modelos
Balanceo De ModelosBalanceo De Modelos
Balanceo De Modelosmsc080277
 
Modelo de datos facturacion
Modelo de datos facturacionModelo de datos facturacion
Modelo de datos facturacionLizgcc
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de DatosVannesa Salazar
 
Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)Miguel Miranda
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareJahiro Bojorquez
 
Creación de tablas y relaciones en mysql workbench
Creación de tablas y relaciones en mysql workbenchCreación de tablas y relaciones en mysql workbench
Creación de tablas y relaciones en mysql workbenchJair Ospino Ardila
 
Componentes y evolucion del modelado de negocios(investigacion)
Componentes y evolucion del modelado de negocios(investigacion)Componentes y evolucion del modelado de negocios(investigacion)
Componentes y evolucion del modelado de negocios(investigacion)Anel Sosa
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftChuyito Alvarado
 
Segunda forma normal
Segunda forma normalSegunda forma normal
Segunda forma normalITCV
 
Funciones del lenguaje ensamblador
Funciones del lenguaje ensambladorFunciones del lenguaje ensamblador
Funciones del lenguaje ensambladorAna Velazquez
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datosSergio Sanchez
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedioGuillermo
 
Enfoque estructurado enfoque oo
Enfoque estructurado   enfoque ooEnfoque estructurado   enfoque oo
Enfoque estructurado enfoque ookarlanm07
 

La actualidad más candente (20)

Distribución y fragmentación de datos
Distribución y fragmentación  de datosDistribución y fragmentación  de datos
Distribución y fragmentación de datos
 
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
 
Implementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlImplementacion de bases de datos en mysql
Implementacion de bases de datos en mysql
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Balanceo De Modelos
Balanceo De ModelosBalanceo De Modelos
Balanceo De Modelos
 
Modelo de datos facturacion
Modelo de datos facturacionModelo de datos facturacion
Modelo de datos facturacion
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de software
 
Creación de tablas y relaciones en mysql workbench
Creación de tablas y relaciones en mysql workbenchCreación de tablas y relaciones en mysql workbench
Creación de tablas y relaciones en mysql workbench
 
Componentes y evolucion del modelado de negocios(investigacion)
Componentes y evolucion del modelado de negocios(investigacion)Componentes y evolucion del modelado de negocios(investigacion)
Componentes y evolucion del modelado de negocios(investigacion)
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
 
Segunda forma normal
Segunda forma normalSegunda forma normal
Segunda forma normal
 
Funciones del lenguaje ensamblador
Funciones del lenguaje ensambladorFunciones del lenguaje ensamblador
Funciones del lenguaje ensamblador
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 
CURSORES EN SQL SERVER
CURSORES EN SQL SERVERCURSORES EN SQL SERVER
CURSORES EN SQL SERVER
 
Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
 
Modelos de datos
Modelos de datosModelos de datos
Modelos de datos
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
 
Enfoque estructurado enfoque oo
Enfoque estructurado   enfoque ooEnfoque estructurado   enfoque oo
Enfoque estructurado enfoque oo
 

Similar a Optimizacion De Consultas

Mejores practicas sql
Mejores practicas sqlMejores practicas sql
Mejores practicas sqlnnakasone
 
Diseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdDiseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdLuis Jherry
 
Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Luis Jherry
 
Diseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdDiseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdLuis Jherry
 
Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Luis Jherry
 
Carbura tusql sesion2_slideshare
Carbura tusql sesion2_slideshareCarbura tusql sesion2_slideshare
Carbura tusql sesion2_slideshareJulián Castiblanco
 
SQL Server Fundamentals 3ra Sesion
SQL Server Fundamentals 3ra SesionSQL Server Fundamentals 3ra Sesion
SQL Server Fundamentals 3ra SesionJulián Castiblanco
 
Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Julián Castiblanco
 
Creación de base de datos
Creación de base de datosCreación de base de datos
Creación de base de datosUTN
 
Novedades sql server 2008 para developers
Novedades sql server 2008 para developersNovedades sql server 2008 para developers
Novedades sql server 2008 para developersEnrique Catala Bañuls
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareJulián Castiblanco
 
Optimizacion consultas oracle
Optimizacion consultas oracleOptimizacion consultas oracle
Optimizacion consultas oracleBlitzHive
 
Libro de recetas.pptx
Libro de recetas.pptxLibro de recetas.pptx
Libro de recetas.pptxEugenio764166
 
Optimizacion consultas oracle
Optimizacion consultas oracleOptimizacion consultas oracle
Optimizacion consultas oracleBlitzHive
 
Afinamientodebasesdedatosyservidoreswebs
AfinamientodebasesdedatosyservidoreswebsAfinamientodebasesdedatosyservidoreswebs
Afinamientodebasesdedatosyservidoreswebsricardosusa5
 
Consideraciones de diseño
Consideraciones de diseñoConsideraciones de diseño
Consideraciones de diseñoYoung Hyun
 

Similar a Optimizacion De Consultas (20)

Mejores practicas sql
Mejores practicas sqlMejores practicas sql
Mejores practicas sql
 
Diseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdDiseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bd
 
Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2
 
Diseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdDiseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bd
 
Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2
 
Pres17BDII.ppt
Pres17BDII.pptPres17BDII.ppt
Pres17BDII.ppt
 
Carbura tusql sesion2_slideshare
Carbura tusql sesion2_slideshareCarbura tusql sesion2_slideshare
Carbura tusql sesion2_slideshare
 
SQL Server Fundamentals 3ra Sesion
SQL Server Fundamentals 3ra SesionSQL Server Fundamentals 3ra Sesion
SQL Server Fundamentals 3ra Sesion
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Optimiza tus queries desde abajo
Optimiza tus queries desde abajoOptimiza tus queries desde abajo
Optimiza tus queries desde abajo
 
Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2
 
Creación de base de datos
Creación de base de datosCreación de base de datos
Creación de base de datos
 
Novedades sql server 2008 para developers
Novedades sql server 2008 para developersNovedades sql server 2008 para developers
Novedades sql server 2008 para developers
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
 
Optimizacion consultas oracle
Optimizacion consultas oracleOptimizacion consultas oracle
Optimizacion consultas oracle
 
Libro de recetas.pptx
Libro de recetas.pptxLibro de recetas.pptx
Libro de recetas.pptx
 
Optimizacion consultas oracle
Optimizacion consultas oracleOptimizacion consultas oracle
Optimizacion consultas oracle
 
Afinamientodebasesdedatosyservidoreswebs
AfinamientodebasesdedatosyservidoreswebsAfinamientodebasesdedatosyservidoreswebs
Afinamientodebasesdedatosyservidoreswebs
 
MySQL Good Database Design
MySQL Good Database DesignMySQL Good Database Design
MySQL Good Database Design
 
Consideraciones de diseño
Consideraciones de diseñoConsideraciones de diseño
Consideraciones de diseño
 

Más de Oto Tumax

Deseconomia de escala micro. exposicion.
Deseconomia de escala micro. exposicion.Deseconomia de escala micro. exposicion.
Deseconomia de escala micro. exposicion.Oto Tumax
 
Proyecto microeconomia.
Proyecto microeconomia.Proyecto microeconomia.
Proyecto microeconomia.Oto Tumax
 
Presentacion manual de creacion de una microempresa solicitando credito al mi...
Presentacion manual de creacion de una microempresa solicitando credito al mi...Presentacion manual de creacion de una microempresa solicitando credito al mi...
Presentacion manual de creacion de una microempresa solicitando credito al mi...Oto Tumax
 
Manual De Creacion De Una Micro-Empresa con Credito Ministerio De Economia
Manual De Creacion De Una Micro-Empresa con Credito Ministerio De EconomiaManual De Creacion De Una Micro-Empresa con Credito Ministerio De Economia
Manual De Creacion De Una Micro-Empresa con Credito Ministerio De EconomiaOto Tumax
 

Más de Oto Tumax (7)

Inocuidad
InocuidadInocuidad
Inocuidad
 
pr
prpr
pr
 
Deseconomia de escala micro. exposicion.
Deseconomia de escala micro. exposicion.Deseconomia de escala micro. exposicion.
Deseconomia de escala micro. exposicion.
 
Proyecto microeconomia.
Proyecto microeconomia.Proyecto microeconomia.
Proyecto microeconomia.
 
Presentacion manual de creacion de una microempresa solicitando credito al mi...
Presentacion manual de creacion de una microempresa solicitando credito al mi...Presentacion manual de creacion de una microempresa solicitando credito al mi...
Presentacion manual de creacion de una microempresa solicitando credito al mi...
 
Manual De Creacion De Una Micro-Empresa con Credito Ministerio De Economia
Manual De Creacion De Una Micro-Empresa con Credito Ministerio De EconomiaManual De Creacion De Una Micro-Empresa con Credito Ministerio De Economia
Manual De Creacion De Una Micro-Empresa con Credito Ministerio De Economia
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 

Optimizacion De Consultas

  • 1. Procesamiento y Optimización de Consultas SQL Universidad Mariano Gálvez De Guatemala Grupo 4 Eduardo Otoniel Tumax Sulecio Sergio Aníbal Argueta Paredes Álvaro Antonio Álvarez Juan Diego Hurtarte Hicho
  • 2. ¿Cómo se resuelven las consultas? Usuario Da to sR es pu es ta Parser Optimizador Generador De Procesador Datos Código Del DBMS
  • 3. Estrategias usuales de los optimizadores ● Proceso detallado de Optimización. ● Optimización Heurística Basada en equivalencia de las expresión del álgebra y ciertas estrategias básicas para limitar el tamaño de los resultados ● Optimización Sql Basada en estimaciones y datos del catálogo que permiten seleccionar un mejor plan de acceso.
  • 4. Proceso de Optimización Generador Parser De Código Traductor Algebra Procesador Relacional Del DBMS Generador de Generador De Planes Planes Logicos Especificos
  • 5. Conceptos ● Generación del Algebra (Árbol Canónico) • Arbol de una expresión relacional • Representación de un query en SQL previo a su optimización • las hojas representan las relaciones de entrada • los nodos internos representan operadores del álgebra relacional • su ejecución supone que los operadores se aplicarán tan pronto como sus operandos estén disponibles, sustituyendo el nodo por la relación resultante • la ejecución termina al aplicarse el operador representado por el nodo raíz ● Generación de planes lógicos (Optimización Heurística) Implica la aplicación de determinadas estrategias (heurísticas) y consultas al catálogo para tamaños de las relaciones para transformar el árbol original.
  • 6. Ejemplo 1 Resolver esta consulta sobre las tablas:  –empleados(nombre,edad,salario,depto)  – departamentos(nroD,nombreD,piso,gerente)
  • 7. Arbol De Consulta • Arbol de consulta que es una estructura de árbol que corresponde a una expresión del álgebra relacional en el que las tablas se representan como nodos hojas y las operaciones del álgebra relacional como nodos intermedios.
  • 8. Arbol De Consulta • Por ejemplo, para la consulta: SELECT numerop, numd, apellido, dirección, fechan FROM proyecto, departamento, empleado WHERE numd=numerod AND nssgte=nss AND lugarp='Santiago'; un árbol de consulta sería:
  • 9. Traducción a SQL • Una funcionalidad importante implementada ha sido la traducción de las consultas a SQL. Una vez más gracias al diseño de las clases encargadas de gestionar los árboles, ha bastado con recorrerlos implementando métodos capaces de traducir cada una de las operaciones del álgebra relacional a su equivalente en SQL. También se ha abordado el tema de la creación de vistas puesto que es una parte importante en la formación que el alumno recibe en la asignatura de Ficheros y Bases de Datos y dependiendo de la complejidad de las consultas ayuda al usuario a aclararse durante su estudio.
  • 10. Traducción de consultas SQL a Álgebra Relacional Bloque de consulta – Una única expresión select-from-where incluyendo group-by, order-by, having y los operadores (max, min, count, avg y sum)
  • 11. 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 necesita procesar 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.
  • 12. A la 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.  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.
  • 13. Que pasa con los índices • Los índices son campos que permiten la búsqueda a partir de dicho campo a una velocidad notablemente superior. • Los campos que se recomiendan indexar son: • o Claves Primarias • o Claves Foráneas • o Campos por los cuales se realizaran bú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.
  • 15. Acerca de la formulación de la 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 primero la estructura de la tabla antes de ejecutar la sentencia. • Seleccionar solo aquellos campos que se necesiten, cada campo extra genera tiempo extra.
  • 16. Acerca de la formulación de la consultas: • Utilizar Inner Join , left join , right join, para unir las tablas en lugar del where, esto permite que a medida que se declaran las tablas se vallan uniendo mientras que si utilizamos el where el motor genera primero el producto cartesiano de todos los registros de las tablas para luego filtrar las correctas, un trabajo definitivamente lento. • Especificar el alias de la tabla delante de cada campo definido en el select, esto le ahorra tiempo al motor de tener que buscar a que tabla pertenece el campo especificado. • Evitar el uso de Cast. Y formulas dentro de las consultas, cada formula y casteo retrasan el motor considerablemente. • Select CAST(goles as varchar(30)) • from jugadores • where id = 100
  • 17. Optimización de Consultas SQL  EMPAREJAMIENTOS EN WHERE VS. EMPAREJAMIENTOS EN EL FROM  ORDEN DE PROCESAMIENTO DE UNA CONSULTA MULTITABLA  COMPOSICIONES EXTERNAS (EN EL WHERE Y EN EL FROM)  QUERY PERFORMANCE
  • 18. COMPOSICIONES EN EL WHERE VS. COMPOSICIONES EN EL FROM • Debido al orden de procesamiento de una consulta multitabla el motor de BD se ve beneficiado si las composiciones son realizadas en el FROMa través de INNER JOIN o alguna de sus variantes (LEFT OUTER JOIN, RIGHT OUTER JOIN). Esto se debe a que el motor al procesar una consulta SQL lo hace en este orden: • Realiza el producto cartesiano de las tablas en el FROM • Si existe cláusula WHERE aplica la condición de búsqueda • Para las filas restantes calcula el valor de cada elemento en la lista del SELECT • Si existe un SELECT DISTINCT elimina las filas duplicadas • Si existe un ORDER BY ordena el resultado
  • 19. Si nosotros realizamos la composición directamente en el FROM evitamos utilizar la cláusula WHERE • SELECT F.numFactura,C. CliNom, F.Monto • FROM Factura F INNER JOIN Cliente C ON F.codcli=C.codcli
  • 20. Si nuestra composición entre tablas requiere más de un campo y más de dos tablas la sintaxis sería la siguiente: • SELECT F.numFactura, C.cliNom, F.Monto, V.venNom • FROM Factura F INNER JOIN Cliente C ON F.tipoDoc=C.tipoDoc AND F.numDoc=C.numDoc INNER JOIN Vendedor ON F.codVen=V.codVen
  • 21. COMPOSICIONES EXTERNAS • Al realizar composiciones internas o INNER JOIN entre dos tablas, los registros que no se correspondan en ambas tablas son eliminados de la lista de resultados, si yo no deseo que se eliminen los registros de una o ambas tablas aunque queden desemparejados debo realizar composiciones externas. Por ejemplo:
  • 22. Al realizar una composición externa podría recuperar todo el conjunto de resultados, las composiciones externas dependen del orden en el que se listen las tablas: • SELECT TC.Coche, TM.marca • FROM TCOCHES TC RIGHT OUTER JOIN TMARCAS TM ON TC.marca=TM.codigo
  • 23. QUERY PERFORMANCE • Buenas prácticas para mejorar nuestras consultas SQL • Realizar las composiciones en el FROM • Tener en cuenta el orden en el que enunciamos las tablas en el FROM • Uso de funciones de T-SQL • Evitar el uso de SELECT * • Evitar el SELECT DISTINCT y el ORDER BY • Estas fueron unas breves recomendaciones a tener en cuenta a la hora de generar nuestras sentencias SQL, más adelante seguiremos con este tema, por ejemplo el uso de subconsultas, consultas en el FROM, uso de IF y CASE para condiciones, etc. las cuales son fundamentales a la hora de realizar nuestros procesos ETL.
  • 24. Optimización por Heurísticas • Cambiar la consulta original por otra equivalente de • forma de minimizar los resultados intermedios. ● Pueden existir varias alternativas. ● Se basa en aplicar equivalencias de los operadores del álgebra de forma que: • 1. Las selecciones se apliquen lo antes posible. • 2. Las ramas izquierdas de los join sean más chicas que las derechas.
  • 25. Optimización Heurística Aplicación de reglas de transformación y heurísticas para modificar la representación interna de una consulta (Álgebra Relacional o Árbol de consulta) a fin de mejorar su rendimiento • Varias expresiones del Álgebra Relacional pueden corresponder a la misma consulta • Lenguajes de consulta, como SQL permiten expresar una misma consulta de muchas formas diferentes, pero el rendimiento no debe depender de cómo sea expresada la consulta
  • 26. • El Analizador Sintáctico genera árbol de consulta inicial – sin optimización  ejecución ineficiente • El Optimizador de Consultas transforma el árbol de consulta inicial en árbol de consulta final equivalente y eficiente Aplicación de reglas de transformación guiadas por reglas heurísticas Conversión de la consulta en su forma canónica equivalente
  • 27. El Optimizador tiene un conjunto de técnicas para realizar cada operación – Ejemplo: técnicas para implementar la operación de Restricción σ – Búsqueda Lineal – Búsqueda Binaria – Empleo de Índice Primario o Clave de Dispersión – Empleo de Índice de Agrupamiento – Empleo de Índice Secundario • ¿Cómo elige el Optimizador las técnicas adecuadas en cada caso?
  • 28. Optimización Información Información sobre la interdependencia Estadística entre las operaciones de bajo nivel (diccionario de datos) OPTIMIZADOR Elección de varias técnicas candidatas para cada operación