Implementação e Optimização de Bancos de dados

Slides:



Advertisements
Presentaciones similares
Introducción Lenguaje de manipulación de datos (Data Manipulation Language) Permite a los usuarios llevar a cabo las tareas de consulta o manipulación.
Advertisements

Unidad IV Objetivo de la Unidad:
Teórico: Structured Query Language
SQL G r u p o
Julio Pacheco SQL SERVER 2005 XML APRENDIENDO CON EJEMPLOS.
IBD Clase 15.
VISTAS EN INFORMIX Prof. Gabriel Matonte.
Base de Datos El lenguaje SQL.
EL LENGUAJE ESTÁNDAR SQL
Características Objeto Relacionales en Oracle
Unidad 3 Lenguaje SQL Contenidos Que es SQL ? Estructura de SQL
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Lenguaje SQL (Structured Query Language)
SQL Básico Prof. Nelliud D. Torres.
Subconsultas Avanzadas
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 11 Creando Vistas.
Bases de datos con MYSQL
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
IBD CLASE 15. SQL Lenguaje de Consultas Estruturado (SQL) ◦Lenguaje de trabajo estándard para modelo relacional ◦Componentes ◦DDL: Data Definition Language.
Programación en Visual Basic Lección #8: SQL Por Antonio F. Huertas.
Consultas SQL (Base de Datos)
INSTRUCCIONES Elaboración de la Presentación:
LENGUAJE SQL.
Bases de Datos Sql.
LENGUAJE ESTRUCTURADO DE CONSULTAS
Prof. De Bases de Datos: Lcdo. Luis Peña. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query.
Diseña y administra base de datos avanzadas
 La sentencia SELECT recupera todas las columnas o un subconjunto de ellas de una tabla. Esto afecta a todas las filas de la tabla, a menos que especifiquemos.
Consultas SQL. SQL SQL es un lenguaje de consulta estructurado (Structured Query Languague). Se utiliza para: Eliminar Modificar Consultar La base de.
AA Gerardo Morgade Donato AA Isnel Leyva Herbella.
Unidad 6. Tema 4. Lenguaje de consultas SQL
Septiembre 12, 2015 Bogotá, Colombia #sqlsatBogota.
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
DLM Transact SQL Sesión II Recuperación de información.
Base de Datos I – Ing. Mary Carlota Bernal J.  Cada instrucción PL/SQL tiene asociado internamente un cursor  Los cursores en PL/SQL pueden ser de dos.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
6 Triggers ORACLE - III Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
DML Transact SQL Sesión III Agrupando y resumiendo información.
COMANDOS SQL. ¿QUÉ ES SQL? El lenguaje de consulta estructurado es un lenguaje declarativo que permite la creación, acceso e interacción de bases de datos.
Saregune CC 2009 SQL Introducción. base de datos Una estructura ordenada de información.
Conferencia 7. Lenguaje SQL Estándar. Ejemplos.
SQL: Structured Query Language
DISEÑO DE BASES DE DATOS
Curso Computación-Tecnología Médica
Lenguaje de manipulación de datos
Tipos de datos en MYSQL YEAR: Año. “YYYY” o “YY”
Base de Datos Introducción
SQL: Structured Query Language
Sesión IV Consultando múltiples tablas
SQL Prof. Martín Contreras.
Técnicas y Herramientas de Computación
CONSULTAS SQL POSTGRES.
Structure Query Languaje
SQL 2: Structured Query Language
Lenguaje Estructurado de Consultas
SQL Lenguaje de Consulta Estructurado
MODELO RELACIONAL.
Orígenes Funciones Condicionales
Join en MySQL.
Prof. Daniel Obando Fuentes
Lenguaje SQL Contenidos Que es SQL ? Estructura de SQL
Structure Query Languaje
4.- Sentencia SELECT simple
Procedimientos para agrupar y resumir datos. Introducción Presentación de los primeros n valores Uso de funciones de agregado Fundamentos de GROUP BY.
Normalmente emparejamos tablas que están relacionadas entre sí y una de las columnas de emparejamiento es clave principal, pues en este caso, Cuando una.
Características Objeto Relacionales en Oracle
LENGUAJES DE BASES DE DATOS: SQL
TRIGGERS VISTAS Y PROCESOS Ing. Fabiola Nilda Perez Oliver
Ing. Francisco Rodríguez
Fundamentos de las Base de Datos. Contenido Que es una Base de Datos. La diferencia entre datos e informacion. Clasificacion de las base de datos. Importancia.
Transcripción de la presentación:

Implementação e Optimização de Bancos de dados Banco de Dados II Implementação e Optimização de Bancos de dados Funções agregadas de ventana. Cláusula WITH e Cláusula OVER MsC. Leoder Alemañy Socarrás

Bases de Datos Actuales ¿Como crêem vocês que serão os tempos de resposta em consultas que requeiram da execução de subconsultas? ¿Como poderiam melhorar estes tempos de resposta para recuperar a mesma informação?

Objetivos Descrever a estrutura e funcionamento das funções agregadas. A cláusula WITH e a cláusula OVER.

Resumen Diseño de Bases de Datos: Modelo Entidad – Relación. Normalización Patrones de diseño Transformación Implementación de Bases de Datos: Lenguaje SQL DML (Select, Insert, Delete, Update) DCL DDL (Create, Drop, Alter) Funciones y Vistas.

Resumen Implementación de Bases de Datos: Cláusula SELECT Select …. (Funciones Agregadas) From ….. Tabla1 INNER JOIN Tabla2…..ON…. Where….. (Subconsultas, LIKE…) Group By Having (condición con funciones agregadas) Order By … ASC….DESC…. Funciones Agregadas: COUNT, AVG, MAX, MIN, SUM

Función de Ventana Una función ventana es una función agregada aplicada a una partición o subconjunto del resultado de una consulta, que devuelve un valor por cada fila del resultado. Están disponibles en sistemas gestores de bases de datos como Oracle, SQL Server, Sybase y DB2, pero en ninguna base de datos de código abierto, exceptuando PostgreSQL a partir de la versión 8.4

¿Por qué usar funciones ventanas? Empleado (empid, departamento, salario, edad)

Pregunta ¿Qual é a diferença do salário da cada um dos empregados com respeito à média de seu departamento?

Solución SELECT e1.empid, e1.departamento, e1.salario, e1.edad, (SELECT AVG(e2.salario) FROM empleado e2 WHERE e2.departamento=e1.departamento ) as promedio FROM empleado e1;

¿É a solução óptima? Esta solución nos mostraría los datos de cada empleado con el promedio de salario del departamento al que él corresponde. Sin embargo con el uso de las "funciones ventanas" la solución sería más simple y los tiempos de respuestas serían menores.

Diferencias entre el uso de las funciones ventana y el uso del GROUP BY Con el GROUP BY obtenemos un resultado con una fila por cada valor diferente del atributo usado en el GROUP BY.

Funciones de ventana Uma función ventana devolve um valor pela cada bicha do resultado de uma consulta.

Sintaxis de las funciones ventanas OVER( [PARTITION BY expresion [, ...]] [ORDER BY expression [ASC|DESC][NULLS{FIRST|LAST}][, ...]] [Frame-Clause] )

Parámetros Partition by: Realiza la separación lógica de las N clases que componen la partición creada de acuerdo a la expresión definida. Order by: Especifica la manera en que se ordenaran los datos dentro de la clase. Este elemento es de vital importancia en un grupo importante de casos.

Cláusula Frame La definición del frame es uno de los elementos más importantes cuando se utilizan funciones de ventana. En el frame se define el conjunto de filas que se tendrán en cuenta para computar el resultado de la función analítica, en aquellos casos en que se opere sobre una parte de los datos y no sobre toda la clase.

Sintaxis de Frame-Clause [ RANGE | ROWS ] frame_start [ RANGE | ROWS ] BETWEEN frame_start AND frame_end Y los valores que pueden ser asignados son los siguientes: UNBOUNDED PRECEDING value PRECEDING CURRENT ROW value FOLLOWING UNBOUNDED FOLLOWING

Ejemplo 1 Mostrar el empid, departamento, salario, edad y el promedio de los salarios por departamento, para poder realizar la comparación. SELECT empid, departamento, salario, edad, avg (salario) OVER (PARTITION BY departamento) AS promedio FROM empleado;

Resultados Mostrar el empid, departamento, salario, edad y el promedio de los salarios por departamento, para poder realizar la comparación.

Ejemplo 1.1 Mostrar el empid, departamento, salario, edad, el promedio de los salarios y el promedio de las edades por departamento, para poder realizar la comparación. SELECT empid, departamento, salario, edad, avg (salario) OVER (PARTITION BY departamento) AS sal_medio, avg (edad) OVER (PARTITION BY departamento) AS ed_media FROM empleado

Resultados

Ejemplo 2 Calcular el promedio de los salarios teniendo en cuenta la fila actual más los salarios de las dos filas siguientes que pertenecen a la partición. SELECT empid, departamento, salario, edad, avg (salario) OVER (PARTITION BY departamento ORDER BY ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING ) AS salario_medio FROM empleado

Resultados

Más funciones Agregadas row_number() percent_rank() last_value() rank() dense_rank() first_value()

Row number Computa un número de fila secuencial comenzando con 1 en la primera tupla en cada partición y de acuerdo al ordenamiento de las tuplas en la partición. Enumerar los empleados por cada tipo de departamento. SELECT departamento, salario, edad , ROW_NUMBER() OVER (PARTITION BY departamento) FROM empleado;

Resultados

RANK Es el rango o jerarquía que ocupa una tupla R teniendo en cuenta las tuplas que la preceden. El rango si encuentra dos tuplas en una posición empatada, les asigna el mismo número. Mostrar el lugar que ocupan los empleados ordenados por la edad. SELECT departamento, salario, edad , Rank() OVER (order by edad) FROM empleado;

Resultados

RANK Mostrar el lugar que ocupan los empleados ordenados por la edad dentro de su departamento. SELECT departamento, salario, edad , Rank() OVER (PARTITION BY departamento order by edad ) FROM empleado;

Resultados

DENSERANK El DENSERANK (rango denso) otorga un número de orden a la tupla en dependencia de su puesto en el ordenamiento sin dejar saltos en la numeración. Ejemplo: Mostrar el lugar que ocupan los empleados ordenados por la edad. SELECT departamento, salario, edad , dense_Rank() OVER (order by edad ) FROM empleado;

Resultados

DENSERANK Ejemplo: Mostrar el lugar que ocupan los empleados ordenados por la edad dentro de su departamento. SELECT departamento, salario, edad , dense_Rank() OVER (PARTITION BY departamento order by edad ) FROM empleado;

Resultados

PERCENT_RANK Devuelve el ranking relativo (rank() – 1) / (total de filas - 1) SELECT departamento, salario, edad , percent_rank() OVER (order by edad ) FROM empleado;

Resultados

PERCENT_RANK Mostrar el ranking relativo que ocupan los empleados ordenados por la edad dentro de su departamento. SELECT departamento, salario, edad , percent_rank() OVER (PARTITION BY departamento order by edad ) FROM empleado;

Resultados

LAST_VALUE Devuelve el último valor del marco de la ventana para el atributo indicado. Ejemplo: Mostrar los datos de cada empleado y la mayor edad del departamento a que pertenecen. SELECT departamento, salario, edad, last_value(edad) OVER (PARTITION BY departamento order by edad ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM empleado;

Resultados

FIRST_VALUE Devuelve el primer valor del marco de la ventana para el atributo indicado. Ejemplo: Mostrar los datos de cada empleado y la menor edad del departamento a que pertenecen. SELECT departamento, salario, edad, first_value(edad) OVER (PARTITION BY departamento order by edad ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM empleado;

Resultados

Conclusiones

CLÁUSULA WITH La cláusula WITH permite especificar una o más subconsultas que serán referenciadas por su nombre en la consulta principal. Una propiedad útil de las consultas WITH es que son evaluadas solo una vez por cada ejecución de la consulta principal, aún si la consulta primaria se refiere a ellas más de una vez.

Optimización de Consultas. CLÁUSULA WITH Consultas Recursivas. Optimización de Consultas.

Sintaxis [ WITH [ RECURSIVE ] SELECT [ FROM ] [ WHERE ] [ GROUP BY] [ HAVING] [ORDER BY]

Consultas Recursivas Es una consulta que hace referencia a su salida a partir del uso de la cláusula with. WITH RECURSIVE nombretabla (<lista de columnas>) AS ( < caso base> [UNION|INTERSECT] [ALL|DISTINCT] <paso recursivo> )

Optimización de Consultas Es una consulta que hace referencia a su salida a partir del uso de la cláusula with. WITH <alias_name> AS (sql_subquery_statement) SELECT column_list FROM <alias_name>[,tablename] [WHERE <join_condition>]

Optimizar el Rendimiento de Consultas ¿Cuál es la diferencia del salario de cada uno de los empleados con respecto a la media de su departamento? SELECT e1.empid, e1.departamento, e1.salario, e1.edad, (select avg(e2.salario) from empleado e2 where e2.departamento=e1.departamento ) as promedio FROM empleado e1;

Utilizando la cláusula WITH WITH departamento_salario as (SELECT e2.departamento, AVG(e2.salario) as salario_promedio FROM empleado e2 GROUP BY departamento) SELECT e1.empid, e1.departamento, e1.salario, e1.edad, departamento_salario.salario_promedio FROM empleado e1, departamento_salario WHERE departamento_salario.departamento = e1.departamento;

Resultado

Optimizar el Rendimiento de Consultas Mostrar para cada empleado, además del salario promedio de su departamento, la edad promedio en el departamento de cada uno. SELECT e1.empid, e1.departamento, e1.salario, e1.edad, (select avg(e2.salario) from empleado e2 where e2.departamento=e1.departamento ) as salario_promedio, (select avg(e3.edad) from empleado e3 where e3.departamento=e1.departamento ) as edad_promedio FROM empleado e1;

Utilizando la cláusula WITH WITH departamento_salario as (SELECT e2.departamento, AVG(e2.salario) as salario_promedio FROM empleado e2 GROUP BY departamento), departamento_edad as (SELECT e3.departamento, AVG(e3.edad) as edad_promedio FROM empleado e3 GROUP BY departamento) SELECT e1.empid, e1.departamento, e1.salario, e1.edad, departamento_salario.salario_promedio, departamento_edad.edad_promedio FROM empleado e1, departamento_salario, departamento_edad WHERE departamento_salario.departamento = e1.departamento AND e1.departamento = departamento_edad.departamento;

Resultados

Planificador de Consultas Se puede usar para mostrar el plan de ejecución que el planificador genera para una consulta dada. Sintaxis: EXPLAIN PLAN FOR <query>

Utilidad del Planificador O uso deste comando é importantíssimo para analisar a optimização de consultas quando se utilizam funciones de ventanas ou a cláusula WITH. Para isso se deve analisar o plano de consulta com a resposta em sql básico e depois com a variante que se tenha eleito para a optimização dependendo do caso.

Conclusiones

Estudio Independiente PERCENT_RANK LAST_VALUE FIRST_VALUE Consultas Recursivas utilizando la cláusula WITH Uso del planificador de consultas para comparar el rendimiento de dos consultas.

Estudio Independiente Utilizando el script entregado para el estudio independiente, ejecuten el planificador de consultas para los ejemplos de la conferencia en sql básico y utilizando funciones de ventana o cláusula WITH, con el objetivo de analizar las variaciones en los tiempos de respuesta.