La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Diseño de Bases de Datos

Presentaciones similares


Presentación del tema: "Diseño de Bases de Datos"— Transcripción de la presentación:

1 Diseño de Bases de Datos
Laboratorios 3º y 4º Diseño físico con índices en SQL Server Introducción a Microsoft®VISIO®

2 Objetivos Ejecución de scripts con el analizador de consultas:
Examen del plan de ejecución. Forzar el uso de un índice determinado (with (index (...))). Estudio de índices interesantes: consulta simple, con and, con or, con join, con agregados y uso de vistas materializadas. VISIO: Dibujar diagramas. Extracción de diagramas desde BD. Creación de BD a partir de los diagramas. DBD Laboratorio 3º © A. Jaime 2005

3 Crear la BD Credit Inicia el servidor local de SQL Server con el administrador de servicios. Descarga la carpeta comprimida con los scripts de creación de la BD Credit. Ejecuta con doble click el fichero Install.bat de la carpeta anterior. Si hay algún problema lee los comentarios del fichero creabase.sql DBD Laboratorio 3º © A. Jaime 2005

4 Ejecutar Scripts con el analizador de consultas
Descarga en el escritorio los ficheros con scripts que se te facilitan. Inicia el analizador de consultas de SQL Server. Abre el primer script: (1) Indices consulta simple.sql Aparecen, entre otras, instrucciones SELECT. También comentarios (con “--”) Use credit abre la BD de nombre “credit”. Go ejecuta las instrucciones anteriores en lo que se llama un “batch” DBD Laboratorio 3º © A. Jaime 2005

5 Plan de ejecución Muestra los algoritmos usados para ejecutar las operación sobre la BD, por ejemplo, para SELECT. Consulta  Mostrar Plan de Ejecución Selecciona el siguiente fragmento de script con el ratón: Pulsa el icono: (“ejecutar consulta (F5)”) set statistics io on use credit go SELECT LastName, FirstName, Phone_No FROM Member with (Index (0)) WHERE LastName LIKE '[S-Z]%' DBD Laboratorio 3º © A. Jaime 2005

6 Ver el plan de ejecución
Se ha forzado el uso del índice clustered (en este caso el de la clave primaria) con: FROM Member with (Index (0)) Pasando el cursor sobre cada icono del plan de ejecución se explica el paso realizado. En este caso se ha recorrido la tabla Member de manera secuencial (búsqueda lineal): Son registros Se han realizado 146 lecturas (accesos a bloque) DBD Laboratorio 3º © A. Jaime 2005

7 Conteo del nº de bloques en SQL Server
Ejecutando set statistics io on, volviendo a ejecutar la SELECT y mirando en la solapa “Mensajes” SQL Server usa mucha memoria para disponer de gran parte de la BD y reducir las transferencias desde/a disco (ver Ayuda Contenido Arquitectura de SQLServer Arquitectura del motor BD relacional Arquitectura de la E/S). Por eso se cuentan las lecturas lógicas (en memoria) y las físicas son pocas o ninguna (transferencias de bloque reales al disco). DBD Laboratorio 3º © A. Jaime 2005

8 Crear, modificar y borrar índices con el analizador de consultas
Se puede usar la herramienta: Herramientas  Administrar índices También se pueden ejecutar instrucciones T-SQL: Para crear un índice: create index nombreÍndice on tabla(atributos) Para borrarlo: drop index tabla.nombreÍndice Para ver los índices de una tabla: exec sp_helpindex tabla DBD Laboratorio 3º © A. Jaime 2005

9 Índices en SQL Server Tabla sobre la que se define el índice
Hemos creado ya índices con el administrador corporativo: Si es o no campo clave Nombre del índice Atributos sobre los que se define el índice Si las filas quedarán ordenadas por ese atributo DBD Laboratorio 3º © A. Jaime 2005

10 Índices agrupados (clustered) y no agrupados en SQL Server
Información en: Ayuda Contenido Arquitectura de SQLServer Arquitectura de BD Componentes lógicos de una BD Índices de SQL Índices de las tablas Es posible crear tablas sin índices (heap o montón) Índices Clustered (primario o agrupación): las tuplas se mantienen ordenadas por el atributo del índice (pueden ser varios atributos). Sólo puede haber un índice clustered por tabla. Índices No clustered (secundario): Las tuplas NO están ordenadas. DBD Laboratorio 3º © A. Jaime 2005

11 Índices lógicos en SQL Server
a Las hojas de índices NO clustered (secundarios) tendrán: Si la tabla es heap o montón, punteros físicos a tupla (índice físico). Si hay índice clustered, valores del índice clustered en lugar de punteros (índice lógico) 2 a Juan 5 c c c Feli 2 5 a e c 8 e Ignacio 24 5 j f f f Luisa 9 9 9 f g 15 g g g Arantza 15 15 h Inés 16 h 16 h j 24 e j j Iker 8 24 m m Roberto 28 28 m Bloques de datos DBD Laboratorio 3º © A. Jaime 2005

12 Iconos del plan de ejecución: Clustered Index Scan
Bloques de datos a IP a 5 c c 2 Clustered Index Scan Recorrido secuencial de la tabla (ordenados por IP o IA) c e e 24 f f f 9 g g g 15 h 16 h j j j 8 m m 28 DBD Laboratorio 3º © A. Jaime 2005

13 Iconos del plan de ejecución: Index Scan
IS lógico a 2 a 5 c c c 2 5 Index Scan Recorrido de todas las hojas de un IS-c ó IS-nc a e c 5 9 8 e 24 j f f f 9 9 f g 15 g g 15 g 15 h 16 h 16 h j 24 e j j 8 24 m m 28 28 IP m Bloques de datos DBD Laboratorio 3º © A. Jaime 2005

14 Iconos del plan de ejecución: Index Seek
IS lógico a 2 a 5 c c c 2 5 Index Seek Busca desde la raíz a una hoja en IP, IA, IS-c ó IS-nc Puede recorrer varias hojas a partir de la encontrada a e c 8 e 24 5 j f f f 9 9 9 f g 15 g g g 15 15 h 16 h 16 h j 24 e j j 8 24 m m 28 28 IP m Bloques de datos DBD Laboratorio 3º © A. Jaime 2005

15 Iconos del plan de ejecución: Bookmark Lookup
IS lógico j g f a 2 IP c a 5 Bookmark Lookup Index Seek c 5 c 2 a 5 9 e 8 c j e 24 f f 9 f 9 f g 15 g Busca registros en el IP ó IA a partir de valores encontrados en un IS-c o IS-nc 15 g g 15 h 16 h 16 h Bookmark Lookup j 24 e 24 j j 8 m m 28 28 m Bloques de datos DBD Laboratorio 3º © A. Jaime 2005

16 Ver juntos varios planes de ejecución
Permite comparar resultados en una sola pantalla. Selecciona varios SELECT (sin go) y ejecútalos. En la siguiente página de la ayuda on-line se explican todos los iconos de los planes de ejecución: Ayuda Contenido Optimizar el rendimiento de la BD Optimizar consultas Analizar una consulta Mostrar gráficamente el plan de ... Estudia qué ha ocurrido en cada ejecución DBD Laboratorio 3º © A. Jaime 2005

17 Sin WITH en el FROM: resultado “óptimo”
Sin WITH en el FROM NO se fuerza al optimizador a elegir un índice concreto. Sin WITH, el optimizador usará la mejor opción entre las disponibles: la de menos lecturas lógicas Para que el optimizador disponga de opciones interesantes hay que aprender a crear índices que mejoren la ejecución de las consultas Esto último se conoce como diseño físico DBD Laboratorio 3º © A. Jaime 2005

18 Comparación consulta simple
Member_ident: IP(Member_No) 146 bloques Apellido: IS-nc(LastName) 7.109 bloques ApNomTfn: IS-nc(LastName, FirstName, Phone_No) 21 bloques NomApTfn: IS-nc(FirstName, LastName, Phone_No) 58 bloques DBD Laboratorio 3º © A. Jaime 2005

19 Índices interesantes para consultas simples
La mejor opción es un índice que permita resolver la consulta recorriendo SÓLO nodos del índice (sin visitar bloques de datos) Conviene que el índice incluya TODOS los atributos de WHERE seguidos de los de SELECT DBD Laboratorio 3º © A. Jaime 2005

20 Ejercicio: consulta simple
Elimina todos los índices de la tabla charge salvo el primario (charge_ident) Crea índices interesantes para la siguiente consulta: SELECT c.member_no,c.charge_no,c.charge_dt FROM charge as c WHERE c.member_no BETWEEN 6000 and 7000 ¿Puedes bajar de 26 lecturas lógicas? DBD Laboratorio 3º © A. Jaime 2005

21 Consultas con AND Abre el segundo script (el primero se cerrará automáticamente): (2)Indices para AND.sql Allí se analiza la siguiente consulta sobre la tabla Member: Sigue los pasos del script. Trata de entender qué ocurre en cada momento. Qué índice da mejores resultados y por qué SELECT m.Member_No, m.FirstName, m.Region_No FROM Member AS m WHERE m.FirstName LIKE 'K%' AND m.Region_No > 6 AND m.Member_No < 5000 DBD Laboratorio 3º © A. Jaime 2005

22 Iconos nuevos Filter Hash Match / Inner Join Conexión de varios a uno
DBD Laboratorio 3º © A. Jaime 2005

23 Comparación 1ª consulta con AND
Member_ident: IP(Member_No) 74 bloques Nombre: IS-nc(FirstName) 420 bloques Region: IS-nc(Region_no) 3.475 bloques Nombre+Region:IS-nc(FirstName) + IS-nc(Region_no) 11 bloques Region+Nombre: IS-nc(Region_no) + IS-nc(FirstName) NomReg: IS-nc(FirstName, Region_No) 3 bloques SELECT m.Member_No, m.FirstName, m.Region_No FROM dbo.Member AS m WHERE m.FirstName LIKE 'K%‘ AND m.Region_No>6 AND m.Member_No<5000 En este caso la mejor opción no es cubrir la consulta, porque la pregunta es poco selectiva y trae más cuenta usar el índice primario y resolver el resto de la consulta en memoria principal DBD Laboratorio 3º © A. Jaime 2005

24 Comparación 2ª consulta con AND
Member_ident: IP(Member_No) 74 bloques Nombre: IS-nc(FirstName) 420 bloques Region: IS-nc(Region_no) 3.475 bloques Nombre+Region:IS-nc(FirstName) + IS-nc(Region_no) 156 bloques Region+Nombre: IS-nc(Region_no) + IS-nc(FirstName) NomReg: IS-nc(FirstName, Region_No) 150 bloques SELECT m.Member_No, m.FirstName, m.Region_No, m.Phone_no FROM dbo.Member AS m WHERE m.FirstName LIKE 'K%‘ AND m.Region_No>6 AND m.Member_No<5000 En este caso la mejor opción no es cubrir la consulta, porque la pregunta es poco selectiva y trae más cuenta usar el índice primario y resolver el resto de la consulta en memoria principal DBD Laboratorio 3º © A. Jaime 2005

25 Índices interesantes para AND
Cada subcondición añadida con AND va limitando el resultado. Interesa empezar con un índice sobre una columna de WHERE que obtenga pocas tuplas (selectiva). Si hay un índice así, puede valernos. Si no, se intenta con varias columnas de WHERE que obtengan pocas tuplas. No tienen por qué ser todas. Si no hay nada selectivo probar a cubrir la consulta (todos los atributos de WHERE y SELECT) DBD Laboratorio 3º © A. Jaime 2005

26 Ejercicio: consulta con AND
Crea índices interesantes para la siguiente consulta: SELECT c.member_no,c.charge_no,c.charge_dt FROM charge as c WHERE c.member_no BETWEEN 6000 and 7000 AND c.provider_no BETWEEN 100 and 300 ¿Puedes bajar de 21 lecturas lógicas (no 33, sino 21)? DBD Laboratorio 3º © A. Jaime 2005

27 Consultas con OR Sesión 2
Abre el tercer script: (3)Indices para OR.sql Allí se analiza la siguiente consulta y otras similares (como el where mostrado a la dcha.): Sigue los pasos del script. Cuál de los índices da mejores resultados en cada caso y por qué SELECT m.LastName, m.FirstName, m.Region_No FROM Member AS m WHERE m.FirstName='Kimberly' OR m.LastName='Tripp' WHERE m.FirstName='Jeniffer' OR m.LastName='Widom' DBD Laboratorio 3º © A. Jaime 2005

28 Iconos nuevos Sort/Distinct Merge Join/Union Concatenation
DBD Laboratorio 3º © A. Jaime 2005

29 Comparación consulta con OR
Sólo presentamos aquí el caso de la consulta que obtiene todas las columnas, que devuelve más filas y contiene igualdades (“=“) en el WHERE: Con OR: NomApReg IS-nc(FirstName, LastName, Region_No) 43 bloques Con UNION: NomApReg y ApNomReg 10 bloques Con UNION ALL: NomApReg y ApNomReg DBD Laboratorio 3º © A. Jaime 2005

30 Índices interesantes para OR
Una fila forma parte del resultado si una subcondición cualquiera del WHERE es cierta OR es similar a UNIÓN: Si sirve una solución con UNIÓN (mejor UNION ALL) usarla. Si SELECT incluye un identificador de fila (como la clave primaria), entonces OR y UNIÓN son equivalentes. Si no, pueden dar soluciones diferentes. Interesa encontrar índices útiles para cada subconsulta del WHERE (de las unidas con OR) Si nada va bien podemos buscar índices interesantes para toda la condición del WHERE Ir probando hasta dar con una solución satisfactoria DBD Laboratorio 3º © A. Jaime 2005

31 Ejercicio: consulta con OR
Crea índices interesantes y, si es conveniente, transforma la siguiente consulta: SELECT c.charge_no, c.charge_amt, c.statement_no, c.charge_code FROM charge as c WHERE c.charge_amt > 5000 OR c.statement_no >= 30000 ¿Puedes bajar de 78 lecturas lógicas con or? ¿y de 4 con union? DBD Laboratorio 3º © A. Jaime 2005

32 Consultas con JOIN Abre el cuarto script: (4)Indices para Join.sql
Allí se analizan dos consultas con JOIN. Cada una utiliza un algoritmo diferente: Sigue los pasos del script. Qué índices dan mejores resultados en cada caso y por qué SELECT r.region_name, p.provider_name FROM region as r JOIN provider as p ON r.region_no=p.region_no SELECT s.statement_no, p.payment_no FROM statement as s JOIN payment as p ON s.member_no=p.member_no WHERE p.payment_amt between 1000 and 2000 DBD Laboratorio 3º © A. Jaime 2005

33 Icono nuevo Nested Loops / Inner Join Nested Loops / Inner Join
Representación de ciclo anidado (R1) Nested Loops / Inner Join Representación de ciclo único (R2) DBD Laboratorio 3º © A. Jaime 2005

34 Comparación consultas con JOIN
IS = índice secundario Comparación consultas con JOIN Region JOIN Provider: Sin IS: 1000Rg + 7Pr = 1007_bloques Con IS en extran./forán: 2Rg Pr = 1011_bloques Con IS que incluyen WHERE y SELECT: 1Rg + 19Pr = 20_bloques Statement JOIN payment: Sin IS: 170St + 29Py = 199_bloques Con IS en extran./forán: 1432St + 29Py = 1461_bloques Con IS que incluyen WHERE y SELECT: 1432St + 3Py = 1435 _bloques Sólo con IS en payment: 170St + 3Py = 173 _bloques DBD Laboratorio 3º © A. Jaime 2005

35 Índices interesantes para JOIN
Crear un índice para cada clave primaria y uno para cada clave foránea de los JOIN. Crear índices adecuados para la condición WHERE. Probar a crear un índice en cada tabla que incluya sus atributos de WHERE y JOIN. Crearlo en ambos órdenes (primero los de WHERE y primero los de JOIN). Probar a añadir a los últimos índices creados, además de los atributos de WHERE y JOIN, los de SELECT. Si hay más de un JOIN, analizar el que suponga mayor costo. Si no es suficiente estudiar el siguiente más costoso. Continuar estudiando JOIN hasta encontrar una solución satisfactoria. DBD Laboratorio 3º © A. Jaime 2005

36 Ejercicio: consulta con JOIN
Crea índices interesantes para la siguiente consulta: ¿Qué algoritmo utiliza? ¿Puedes bajar de un total de bloques (no )? SELECT m.member_no, c.category_no FROM member as m JOIN charge as c ON m.member_no=c.member_no WHERE m.corp_no is not null DBD Laboratorio 3º © A. Jaime 2005

37 Consultas con agregados (como SUM)
Abre el quinto script: (5)Indices para Agregados.sql Allí se analiza la siguiente consulta sobre la tabla charge: Sigue los pasos del script. Cuál de los índices da mejores resultados y por qué SELECT member_no, SUM(charge_amt) AS TotalVentas FROM charge GROUP BY member_no ORDER BY member_no DBD Laboratorio 3º © A. Jaime 2005

38 Iconos nuevos Stream aggregate / Aggregate Compute Scalar
Cálculo de SUM, AVG, .. aprovechando el orden del recorrido Compute Scalar Cálculo de valores a partir de otros contenidos en la misma fila DBD Laboratorio 3º © A. Jaime 2005

39 Comparación consulta con SUM
Sin IS: 583 bloques Con IS con atributos de SELECT (SUM) y GROUP BY-ORDER BY en ese orden: 236 bloques Con IS con atributos de GROUP BY-ORDER BY y SELECT (SUM) en ese orden: 236 bloques DBD Laboratorio 3º © A. Jaime 2005

40 Índices interesantes para agregados (como SUM)
Se calcula de dos formas: Con un fichero intermedio hash (dir. calculado) Recorriendo un índice/fichero ordenado adecuadamente Conviene usar la 2ª opción para evitar el coste de crear el fichero intermedio Interesa crear índices que incluyan a los atributos de GROUP BY, a los de WHERE y a los de SELECT (sobre los que se aplica la función, por ejemplo SUM) DBD Laboratorio 3º © A. Jaime 2005

41 Ejercicio: consulta con agregados
Crea índices interesantes para la siguiente consulta: ¿Puedes bajar de un total de 55 bloques (no 68)? SELECT AVG(statement_amt), member_no FROM statement with(index(CurMiemCant)) WHERE statement_current <> 0 GROUP BY member_no ORDER BY AVG(statement_amt) DBD Laboratorio 3º © A. Jaime 2005

42 Cómo crear vistas (vistas normales, no materializadas)
Con el administrador corporativo: Utiliza alguna de las BD que creaste en laboratorios anteriores. Selecciona views. Con el botón derecho del ratón selecciona New View. La definición de la vista se expresa como una consulta SELECT. Con el analizador de consultas usando la sintaxis de SQL create view ... Las vistas son otra forma de tener consultas almacenadas en la BD. DBD Laboratorio 3º © A. Jaime 2005

43 Uso de vistas materializadas (vistas indexadas de SQL Server)
Abre el sexto script: (6)Indices de Vistas.sql Allí se analiza la misma consulta con agregados anterior: Sigue los pasos del script. Cómo se consigue ahora el mejor resultado y por qué SELECT member_no, SUM(charge_amt) AS TotalVentas FROM charge GROUP BY member_no ORDER BY member_no DBD Laboratorio 3º © A. Jaime 2005

44 Comparación: sólo índices frente a vistas materializadas
Sin vista: 236 bloques Con vista: 236 bloques / aprox. 250 msg. Con vista indexada (materializada): 34 bloques / aprox. 186 msg. Recorrido de índice Recorrido del mismo índice Recorrido de la vista indexada DBD Laboratorio 3º © A. Jaime 2005

45 Uso de vistas materializadas (indexed views)
Sólo podemos utilizarlas con: Enterprise o Developer Edition SCHEMABOUND: impide modificar la definición de la tabla base COUNT_BIG en SELECT cuando hay funciones agregadas Problema: Puede afectar al rendimiento de INSERT / DELETE / UPDATE sobre la tabla base Ventajas: El resultado de la consulta se mantiene continuamente calculado Se reduce el uso de Cache DBD Laboratorio 3º © A. Jaime 2005

46 Ejercicio: uso de vistas materializadas
Crear una vista indexada para la siguiente consulta. Comparar con el mejor resultado obtenido en el 4º script (173 bloques). Ayuda: el índice habrá que construirlo sobre las columnas resultado de la consulta (las de select). ¿Te da 4 bloques transferidos? (frente a 173 que era la mejor opción con índices) SELECT s.statement_no, p.payment_no FROM dbo.statement as s JOIN dbo.payment as p ON s.member_no=p.member_no WHERE p.payment_amt between 1000 and 2000 DBD Laboratorio 3º © A. Jaime 2005

47 Visio Es un software para creación, edición y almacenamiento de diagramas de diversos tipos: bases de datos, gestión de proyectos, flujos, desarrollo de software (como UML), mapas, etc ... Hay varias ediciones de Visio. Algunas tienen más tipos de diagramas que otras. Visio incluye algunas características interesantes además de la pura edición de diagramas. Aquí veremos su capacidad de importar y exportar esquemas de BD. DBD Laboratorio 3º © A. Jaime 2005

48 Diagramas de BD en Visio
Dependiendo de la versión incluye más o menos tipos de diagrama de BD. Lo que Visio llama Entity-Relationship o Entidad Relación no es tal, sino un tipo de diagrama especial de Visio cercano a un esquema relacional. El diagrama E/R sería lo que Visio llama Chen ERD En los diagramas de Software se incluyen los diagramas de clase de UML (Static Structure) Inicia Visio y selecciona File  New  Database  DataBase Model Diagram DBD Laboratorio 3º © A. Jaime 2005

49 Ingeniería inversa Extraeremos el diagrama de la BD Northwind de SQL Server En Database selecciona Reverse Engineer y realiza los siguientes pasos: Selecciona SQL Server y pulsa New para crear una fuente de datos ODBC para Northwind: Origen de datos de usuario – SQL Server – NW_odbc (si existía en la 1ª pantalla pon NW2_odbc) - (descripción vacía) - Apadeva.unirioja.es – Autenticación SQL Server – dbd – dbd03 – BD predeterminada – Northwind – Probar origen de datos (y si va bien ...) – Aceptar Seleccionar NW_odbc (o NW2_odbc, la que tu has creado) En Objects deja seleccionados: tables-Primary K-Indexes- Foreign K. En Select tables pulsa Select All y luego Finish DBD Laboratorio 3º © A. Jaime 2005

50 Ingeniería inversa (2) Aparecerá una ventana con las tablas de la BD
Seleccionar todas las tablas Pinchar con el ratón y arrastrar y soltar sobre la hoja Se verá el diagrama correspondiente a la BD Northwind Se puede ajustar el diagrama con Tools  Layout Shapes (poner por ejemplo Spacing..  Space between Shapes a 5 mm) El diagrama se puede guardar en un archivo de visio, añadir, modificar, etc. Estudia el diagrama. Compáralo con la BD real: ¿Qué significan: PK, FK1, FK2, ..., I1, I2, ...? ¿A qué corresponden las flechas entre tablas? ¿Y la punta de la flecha? DBD Laboratorio 3º © A. Jaime 2005

51 Creación de un diagrama
Crea un diagrama de Visio del mismo tipo que el anterior para el siguiente esquema de BD. Utiliza los tipos de datos más adecuados para cada atributo. Crea índices para Título y NombreAutor IdLibro NombreAutor AUTORES_LIBROS IdLibro IdSucursal NúmCopias COPIAS_LIBRO IdLibro Título NombreEditorial LIBRO IdLibro IdSucursal NúmTarjeta PRÉSTAMOS FechaSale FechaDevol NúmTarjeta Nombre Dirección LECTOR Teléfono DBD Laboratorio 3º © A. Jaime 2005

52 Creación de una BD a partir del diagrama
A partir del diagrama se puede crear un esquema de BD. Hay varias posibilidades: SQL Server, Access, ... Primero crea una BD vacía en SQL Server. Pon de nombre Bib_Mar_Est (si te apellidas Martínez Estefanía). Crea una fuente de datos odbc para la BD. Database  Generate y seguir los siguientes pasos en el asistente: Seleccionar Create new database –DB already exists – Selecciona la fuente de datos odbc – ... DBD Laboratorio 3º © A. Jaime 2005

53 Fin de los laboratorios
3 y 4 DBD Laboratorio 3º © A. Jaime 2005

54 Explicación algoritmos

55 Algoritmo de Merge/Join
5 2 Juan Feli 9 Luisa 8 Iker a c f j 24 Ignacio 15 16 Arantza Inés 28 Roberto e g h m a Juan 5 24 Ignacio 15 16 Arantza Inés 28 Roberto e g h m Merge/Join c Feli 2 f Luisa 9 j Iker 8 Ficheros ordenados (en el ejemplo por la primera letra) Un recorrido a cada fichero Resultado: las filas de los dos ficheros ordenadas Se toma en cada paso la menor de las dos filas y se avanza a la siguiente fila sólo en la fila tomada Si las filas son iguales se toman y avanza en ambas DBD Laboratorio 3º © A. Jaime 2005

56 Algunas preguntas de tipo test
Sobre los resultados obtenidos

57 Consulta simple: Índice con mejores resultados
El que resuelve la consulta con menos transferencias de bloque (lecturas lógicas) ¿Qué índice da mejor resultado? ¿Por qué da mejor resultado? (una es más cierta que las demás) Porque sólo usa el índice para resolver la consulta. Porque sólo recorre una vez las filas de la tabla. Porque sólo usa el índice para resolver la consulta pero no necesita recorrer todas sus hojas. Porque le vale con recorrer todas las hojas del índice. Comprueba que ejecutando la consulta SELECT sin “with” elige la mejor opción DBD Laboratorio 3º © A. Jaime 2005

58 AND: índice con mejores resultados (consulta 1)
¿Con qué índice se obtiene mejor resultado? ¿Por qué da mejor resultado? (una es más cierta que las demás) Porque sólo necesita recorrer las hojas de un índice Porque recorre una sola vez las tuplas de la tabla Porque sólo necesita buscar en un índice y recorrer algunas de sus hojas Porque crea un fichero de direccionamiento calculado (hash) intermedio Comprueba que ejecutando la consulta SELECT sin “with” elige la mejor opción DBD Laboratorio 3º © A. Jaime 2005

59 OR: índice con mejores resultados
¿Con qué índice se obtiene mejor resultado? ¿Por qué da mejor resultado? (una es más cierta que las demás) Porque no necesita eliminar duplicados Porque elimina duplicados basándose en la lista de atributos de SELECT Porque elimina duplicados basándose en el valor de clave primaria Porque no necesita consultar las tuplas de la tabla, sólo entradas de uno o varios índices Comprueba que ejecutando la consulta SELECT sin “with” elige la mejor opción DBD Laboratorio 3º © A. Jaime 2005

60 JOIN: índices con mejores resultados
¿Con qué índice se obtiene mejor resultado? ¿Por qué da mejor resultado? Porque se reduce el número de procesos de ciclo anidado Porque recorre sólo una vez las tuplas de cada tabla Porque no necesita consultar tuplas de ninguna tabla, sólo entradas de índices Porque se evita recorrer un índice primario Comprueba que ejecutando la consulta SELECT sin “with” elige la mejor opción DBD Laboratorio 3º © A. Jaime 2005

61 Asistente para optimización de índices
Es una herramienta incorporada al analizador de consultas que sugiere índices para acelerar una consulta dada. Consulta  Asistente para optimización de índices Abre el script 1, elimina todos los índices definidos sobre la tabla member y usa el asistente para optimizar la consulta: ¿Se parecen los índices obtenidos con el asistente a nuestra mejor opción para el ejemplo? ¿Cómo funciona este asistente? DBD Laboratorio 3º © A. Jaime 2005


Descargar ppt "Diseño de Bases de Datos"

Presentaciones similares


Anuncios Google