La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Diseño de Bases de Datos Laboratorios 3º y 4º Diseño físico con índices en SQL Server Introducción a Microsoft ® VISIO ®"— 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 DBD Laboratorio 3º © A. Jaime 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.

3 DBD Laboratorio 3º © A. Jaime Crear la BD Credit administrador de servicios 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. Install.bat Ejecuta con doble click el fichero Install.bat de la carpeta anterior. creabase.sql Si hay algún problema lee los comentarios del fichero creabase.sql

4 DBD Laboratorio 3º © A. Jaime 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

5 DBD Laboratorio 3º © A. Jaime 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 SELECTLastName, FirstName, Phone_No FROMwith (Index (0)) FROMMember with (Index (0)) WHERELIKE WHERELastName LIKE '[S-Z]%' go

6 DBD Laboratorio 3º © A. Jaime Ver el plan de ejecución Se ha forzado el uso del índice clustered (en este caso el de la clave primaria) con: FROMwith (Index (0)) 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)

7 DBD Laboratorio 3º © A. Jaime 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).

8 DBD Laboratorio 3º © A. Jaime 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

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

10 DBD Laboratorio 3º © A. Jaime Í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.

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

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

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

14 DBD Laboratorio 3º © A. Jaime Iconos del plan de ejecución: Index Seek 2 c a 5 8 j f 9 15 g 16 h e m a c e f g h j m IS lógico Bloques de datos a c e f g h j m c f j g IP 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

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

16 DBD Laboratorio 3º © A. Jaime 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

17 DBD Laboratorio 3º © A. Jaime 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

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

19 DBD Laboratorio 3º © A. Jaime Í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

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

21 DBD Laboratorio 3º © A. Jaime 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 SELECT m.Member_No, m.FirstName, m.Region_No FROM FROM Member AS m WHERELIKE WHERE m.FirstName LIKE 'K%' AND AND m.Region_No > 6 AND AND m.Member_No < 5000

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

23 DBD Laboratorio 3º © A. Jaime Comparación 1ª consulta con AND Member_ident : IP(Member_No) 74 bloques Nombre:IS-nc(FirstName) 420 bloques Region:IS-nc(Region_no) bloques Nombre+Region:IS-nc(FirstName) + IS-nc(Region_no) 11 bloques Region+Nombre: IS-nc(Region_no) + IS-nc(FirstName) 11 bloques 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

24 DBD Laboratorio 3º © A. Jaime Comparación 2ª consulta con AND Member_ident : IP(Member_No) 74 bloques Nombre:IS-nc(FirstName) 420 bloques Region:IS-nc(Region_no) bloques Nombre+Region:IS-nc(FirstName) + IS-nc(Region_no) 156 bloques Region+Nombre: IS-nc(Region_no) + IS-nc(FirstName) 156 bloques 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

25 DBD Laboratorio 3º © A. Jaime Í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)

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

27 DBD Laboratorio 3º © A. Jaime Consultas con OR 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 SELECT m.LastName, m.FirstName, m.Region_No FROM FROM Member AS m WHERE WHERE m.FirstName='Kimberly' OR OR m.LastName='Tripp' WHERE m.FirstName='Jeniffer' OR OR m.LastName='Widom'WHERE m.FirstName='Jeniffer' OR OR m.LastName='Widom' Sesión 2

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

29 DBD Laboratorio 3º © A. Jaime 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 ) o 43 bloques Con UNION: NomApReg y ApNomReg o 10 bloques Con UNION ALL: NomApReg y ApNomReg o 10 bloques

30 DBD Laboratorio 3º © A. Jaime Í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

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

32 DBD Laboratorio 3º © A. Jaime 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 SELECT r.region_name, p.provider_name FROMJOIN FROM region as r JOIN provider as p ON ON r.region_no=p.region_no SELECT SELECT s.statement_no, p.payment_no FROMJOIN FROM statement as s JOIN payment as p ON ON s.member_no=p.member_no WHERE WHERE p.payment_amt between 1000 and 2000

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

34 DBD Laboratorio 3º © A. Jaime 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 IS = índice secundario

35 DBD Laboratorio 3º © A. Jaime Í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 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 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.

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

37 DBD Laboratorio 3º © A. Jaime 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 SELECT member_no, SUM SUM(charge_amt) AS TotalVentas FROM FROM charge GROUP BY GROUP BY member_no ORDER BY ORDER BY member_no

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

39 DBD Laboratorio 3º © A. Jaime 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

40 DBD Laboratorio 3º © A. Jaime Í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)

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

42 DBD Laboratorio 3º © A. Jaime 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.

43 DBD Laboratorio 3º © A. Jaime Uso de vistas materializadas 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 SELECT member_no, SUM SUM(charge_amt) AS TotalVentas FROM FROM charge GROUP BY GROUP BY member_no ORDER BY ORDER BY member_no

44 DBD Laboratorio 3º © A. Jaime 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

45 DBD Laboratorio 3º © A. Jaime Uso de vistas materializadas (indexed views) con 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 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

46 DBD Laboratorio 3º © A. Jaime 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 SELECT s.statement_no, p.payment_no FROMdbo. FROM dbo.statement as s JOINdbo. JOIN dbo.payment as p ON ON s.member_no=p.member_no WHERE WHERE p.payment_amt between 1000 and 2000

47 DBD Laboratorio 3º © A. Jaime 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.

48 DBD Laboratorio 3º © A. Jaime 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

49 DBD Laboratorio 3º © A. Jaime 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: o 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

50 DBD Laboratorio 3º © A. Jaime 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?

51 DBD Laboratorio 3º © A. Jaime 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 IdLibroTítuloNombreEditorial LIBRO IdLibroIdSucursalNúmCopias COPIAS_LIBRO IdLibroNombreAutor AUTORES_LIBROS NúmTarjetaNombreDirección LECTOR Teléfono IdLibroIdSucursalNúmTarjeta PRÉSTAMOS FechaSaleFechaDevol

52 DBD Laboratorio 3º © A. Jaime 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 –...

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

54 Explicación algoritmos

55 DBD Laboratorio 3º © A. Jaime Algoritmo de Merge/Join 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 5 2 Juan Feli 9Luisa 8Iker a c f j 24Ignacio Arantza Inés 28Roberto e g h m Merge/Join 5 2 Juan Feli 9Luisa 8Iker a c f j 24Ignacio Arantza Inés 28Roberto e g h m 1º 2º 4º 7º 3º 5º 6º 8º

56 Algunas preguntas de tipo test Sobre los resultados obtenidos

57 DBD Laboratorio 3º © A. Jaime 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) a) Porque sólo usa el índice para resolver la consulta. b) Porque sólo recorre una vez las filas de la tabla. c) Porque sólo usa el índice para resolver la consulta pero no necesita recorrer todas sus hojas. d) Porque le vale con recorrer todas las hojas del índice. Comprueba que ejecutando la consulta SELECT sin with elige la mejor opción

58 DBD Laboratorio 3º © A. Jaime 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) a) Porque sólo necesita recorrer las hojas de un índice b) Porque recorre una sola vez las tuplas de la tabla c) Porque sólo necesita buscar en un índice y recorrer algunas de sus hojas d) Porque crea un fichero de direccionamiento calculado (hash) intermedio Comprueba que ejecutando la consulta SELECT sin with elige la mejor opción

59 DBD Laboratorio 3º © A. Jaime 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) a) Porque no necesita eliminar duplicados b) Porque elimina duplicados basándose en la lista de atributos de SELECT c) Porque elimina duplicados basándose en el valor de clave primaria d) 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

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

61 DBD Laboratorio 3º © A. Jaime 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?


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

Presentaciones similares


Anuncios Google