Rocío Contreras Águila Primer Semestre 2010

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Rocío Contreras Aguila Primer Semestre 2010
SQL Y BASES DE DATOS A TRAVÉS DE LA WEB
Excel Avanzado Proteger hojas y libro
integridad referencial
Lunes 18 de Febrero 2008 Material para la clase: Elprofe3.wordpress.com.
LICENCIATURA EN SISTEMAS COMPUTACIONALES EN ADMINISTRACION
Rocío Contreras Águila Primer Semestre 2010
Estadísticas en SQL Server Rocío Contreras Águila, Primer Semestre 2010.
Rocio Contreras Aguila Primer Semestre Para poder ejecutar esto SQL Server nos permite definir datos y nos entrega herramientas para poder exigir.
Al abrir el Access aparece una ventana para crear una base en blanco, con la ayuda de un asistente o abrir una existente. Al principio optamos por la primera.
Curso de Microsoft® Access® 2010
BASE DE DATOS Primeros pasos
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:23 PRESENTACION: BASE DE DATOS ALUMNAS: Velazquez Corona Elsa Ponciano Antonio.
BASES DE DATOS.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Ordenamiento Interno y Búsqueda Binaria
Access Bases de datos.
¿QUÉ SON LAS BASES DE DATOS?
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
SISTEMA DE NACIMIENTOS MANUAL DEL USUARIO. El objetivo del presente manual es servir de guía al usuario final para interactuar con el Sistema, permitiéndole.
Base de Datos Relacional.
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
Integrantes: Esteban Jiménez Guesseppe Lozada Mario Rodriguez Gustavo Tenorio Fabio.
Mayo de 2009Dos Ideas - La visión de Sistemas desde el Desarrollo Definición de Datos Conceptos básicos.
UNIDAD I Conceptos Básicos.
PROGRAMACION II.  Es un conjunto de datos no necesariamente del mismo tipo, los cuales se podrán manipular o realizar cualquier operación sobre cada.
Como empezar en Access 2000 Abrir Access 2000 Pulsamos INICIO
ROMERO G ARCIA FANY KARINA Y BARRIOS CRUZ REBECCA SARAHI GRUPO:303 EQUIPO:5.
OpenOffice Calc CURSO OpenOffice Calc.
 El primer navegador Web incluía un lenguaje de estilo interno que utilizaba dicho navegador para mostrar las páginas HTML.  Sin embargo estos primeros.
Componentes sintácticos
Diseño de una base de datos Zavaleta Nolasco Karina
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
Clase 10: Estructuras de datos y arreglos.
BASE DE DATOS BY: Julián Villar Vázquez.
BASES DE DATOS Con Access.
Base de datos.
ESCUELA TECNOLÓGICA INSTITUTO TÉCNICO CENTRAL Ing. Johanna Vargas Esp. Gerencia de proyectos.
CONSULTAS SENCILLAS A LA BASE DE DATOS
Autora: Francisca Montañez Muñoz
Teoría de Sistemas Operativos Administración de Archivos.
LENGUAJE SQL.
Bases de Datos Access.
Especialista en Business Intelligence Integration Services SSIS Transformaciones (Parte 4) Microsoft SQL Server 2008 R2.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
COLEGIO DE BACHILLERES “XOCHIMILCO TEPEPAN” Nº13  Tecnologías de la Información y comunicación 3.  Profa. Gabriela Pichardo Lazardo EQUIPO 25  Emmanuel.
EQUIPO:#3 GRUPO:304 NOMBRES: Lizbeth Nava Barón y Erick Ali Mejía.
Instrucciones para crear tablas My SQL. A nivel teórico, existen dos lenguajes para el manejo de bases de datos: DDL (Data Definition Language) Lenguaje.
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
Introducción a phpMyAdmin
 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.
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
Lic. Carla Aguirre Montalvo
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
MSSQL SERVER CURSO BÁSICO 1. CONCEPTOS BASICOS DE SQL. DESCRIPCIÓN DEL CURSO. Sesión 3: Índices Uso, Creación, Tipos, Eliminación LENGUAJE DE CONSULTAS.
INTERFAZ DE ACCESS  Access es un sistema gestor de bases de datos relacionales (SGBD). Una base de datos suele definirse como un conjunto de información.
MIA - Grupo 5 Unidad 2.
Qué es SQL? Sentencias básicas

¿Cómo programar un Botón para agregar registros a una base de datos?
SQL es el lenguaje de comunicación entre el programa cliente y programa servidor; Oracle es un programa servidor, en el que está la base de datos propiamente.
ACCESO A DATOS EN ASP.NET Controles de origen de datos Controles enlazados a datos.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
 Las consultas son objetos de base de datos.  Permiten recuperar datos de una tabla.  modifica y almacena los resultado.  Filas resultantes son un.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Transcripción de la presentación:

Rocío Contreras Águila Primer Semestre 2010 Índices en SQL Server Rocío Contreras Águila Primer Semestre 2010

¿Que es un Índice? Un índice es una estructura de datos que permite acceder a diferentes filas de una misma tabla a través de un campo (o campos clave). Un índice permite un acceso mucho más rápido a los datos.

¿Que es un Índice? Para entender lo que es un índice debemos saber primero como se almacena la información internamente en las tablas de una base de datos. Cada tabla se divide en páginas de datos, imaginemos un libro, podríamos escribirlo en "una sola hoja enorme" al estilo pergamino egipcio, o bien en páginas a las que podemos acceder rápidamente a través de un índice.

¿Que es un Índice? Está idea es la que se aplica en el mundo de las bases de datos, la información esta guardada en una tabla (el libro) que tiene muchas hojas de datos (las páginas del libro), con un índice en el que podemos buscar la información que nos interesa.

¿Que es un Índice? Si queremos buscar la palabra zapato en un diccionario , ¿qué hacemos? Leemos todo el diccionario hasta encontrar la palabra, con lo que nos habremos leído el diccionario enterito (¡seguro que aprenderíamos un montón!)  Buscamos en el índice en que página está la letra z, y es en esa página donde buscamos.

¿Que es un Índice? Veamos un ejemplo con nuestro ejercicio:

¿Que es un Índice? Esta tabla no tiene ningún índice creado, por lo cual SQL Server tratará la tabla como un HEAP.  Puesto que esta tabla no tiene ningún tipo de índice, es bastante eficiente para agregar nuevas filas a la tabla pero muy ineficiente para encontrar una fila específica, esto se debe a que es necesario leer toda la tabla para obtener el resultado deseado.

(HEAP) Un HEAP es un montón en español. Un heap es una estructura de datos que almacena la posición física en la que se almacenó cada nueva fila dentro de las páginas asignadas a la tabla.

(HEAP) Los recorridos de tablas o las lecturas secuenciales de un montón se hacen recorriendo las páginas IAM para buscar las extensiones que almacenan las páginas de dicho montón. Como la IAM representa las extensiones en el mismo orden en el que se encuentran en los archivos de datos, ello significa que los recorridos secuenciales de un montón recorren secuencialmente cada archivo. Utilizar las páginas IAM para establecer la secuencia de recorrido también significa que las filas del montón no se devuelven normalmente en el orden en que se introdujeron.

¿Que es un Índice?

¿Que es un Índice? Los índices se actualizan automáticamente cuando realizamos operaciones de escritura en la base de datos. Este es un aspecto muy importante de cara al rendimiento de las operaciones de escritura, ya que además de escribir los datos en la tabla se escribirán también en el índice. Las claves primarias son índices. Los nombres de los índices deben ser únicos.

¿Que es un Índice? Un número elevado de índices hará más lentas estas operaciones. Sin embargo, salvo casos excepcionales, el beneficio que aportan los índices compensa (de largo) esta penalización.

¿Que es un Índice? Las sentencias de SQL para manipular índices son: CREATE INDEX; DROP INDEX;

¿Que es un Índice? La sintaxis para la creación de índices es la siguiente: CREATE [UNIQUE] INDEX <nombre_indice> ON <nombre_tabla>( <nombre_campo> [ASC | DESC]                   {,<nombre_campo> [ASC | DESC]})                   ); La pálabra clave UNIQUE especifica que no pueden existir claves duplicadas en el índice. ASC | DESC especifican el criterio de ordenación elegido, ascendente o descendente, por defecto es ascendente.

Ejemplo Creamos la tabla Cementerio, este ejemplo crea un índice único en el campo IDCementerio. Esto nos permitirá buscar mucho mas rápido por el campo IDCementerio y nos asegurará que no tengamos dos IDCementerio iguales. CREATE UNIQUE INDEX UIX_CEMENTERIO_ IDCementerio ON CEMENTERIO (IDCementerio);

Ejemplo Para eliminar un índice debemos emplear la sentencia DROP INDEX. DROP INDEX <nombre_tabla>.<nombre_indice>; Ejemplo: Para eliminar el índice creado anteriormente. DROP INDEX CEMENTERIO.UIX_CEMENTERIO_ IDCementerio;

Índices Para obtener más información sobre el acceso a los datos requeridos para resolver la consulta ejecutamos la siguiente consulta: CHECKPOINT DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS SET STATISTICS IO ON Select * from Cementerio SET STATISTICS IO OFF

Índices Lo primero que pasa al ejecutar esta consulta es que SQL Server escribe todos los cambios pendientes al disco, la segunda instrucción elimina todos los datos que tiene en memoria. 

Índices La combinación de estas dos instrucciones obliga a SQL Server a leer todo desde disco nuevamente Es importante tener en cuenta que al ejecutar DBCC DropCleanBuffers se produce un fuerte impacto en el desempeño de todos los usuarios, por lo que no se debe utilizar en servidores de producción.

Índices La tercera instrucción nos permite obtener información sobre las lecturas de datos requeridas para contestar una consulta. El resultado que se obtiene en el área de mensajes es: Tabla 'Cementerio'. Número de exploraciones 1, lecturas lógicas 0, lecturas físicas 0, lecturas anticipadas 0.

Índices Para mejorar el desempeño de las consultas se utilizan índices, los más utilizados son los Clustered y Non-Clustered. Existen otros 3 tipos de índices que se utilizan para mejorar los tiempos de acceso a datos XML, a búsquedas de texto y de datos espaciales.

Índices

Índices Los Clustered Indexes son índices que controlan el orden físico de las filas en la tabla, por lo cual solo puede existir uno para cada tabla. Los Non-Clustered indexes son índices que mantienen un sub conjunto de las columnas de la tabla en orden.  Estos índices no modifican el orden de las filas de la tabla, en lugar de esto mantienen una lista ordenada de referencias a filas de la tabla original.

Índices Para ilustrar la diferencia entre estos 2 tipos de índices podemos decir que las páginas blancas de la guía telefónica tienen un clustered index por Apellido(s) y Nombres, con lo cual puedo buscar de forma muy eficiente el número de teléfono de una persona si conozco sus apellidos y su nombre, una vez que lo encuentro obtendré su número de teléfono en forma inmediata pues el numero está al lado del nombre.

Índices En el caso de las páginas amarillas de la guía telefónica la forma de buscar es un poco distinta, en este caso busco por rubro. Primero busco en un índice, el cual me indica en qué página se encuentra la lista de empresas que satisfacen la condición que busco. Esto mismo es lo que pasa cuando utilizo un índice Non-Clustered index una vez que encuentro lo que quiero en el índice debo ir a leer la fila específica para obtener el resto de los datos.

Índices El clustered index controla el orden físico de las filas en la tabla, a diferencia de los índices Non-Clustered que funcionan como una lista ordenada de identificadores de fila.

Índices Todas las tablas que tienen un clustered index tienen un nodo raíz y muchos nodos en los niveles intermedios, estos a su vez pueden apuntar a nodos hojas o a otros nodos intermedios.  Esta estructura forma un árbol (B-Tree) que permite encontrar cualquier fila en forma eficiente.

Índices La búsqueda parte desde el nodo raíz, este nodo tiene una lista de llaves, se comparan estas llaves para encontrar el nodo de nivel intermedio que contenga un rango de llaves que cubra la llave que se está buscando.  Luego se repite el proceso en los nodos intermedios hasta que se encuentre la página de datos que contenga el la fila específica.

Índices Al igual que en el caso de los clustered index, los non-clustered index tienen un nodo raíz y muchos nodos en los niveles intermedios, estos a su vez pueden apuntar a nodos hojas o a otros nodos intermedios.  La diferencia se presenta en los nodos hoja, estos tienen almacenados solo el Id del registro y no todo el registro, por lo que se hacer necesario hacer una búsqueda sobre el índice cluster o sobre el heap para obtener el resto de las columnas de la fila.

Índices

Como descubrir Índices faltantes Cada vez que SQL ejecuta una consulta, internamente determina si esa consulta podía haber sido optimizada con el uso de algún índice inexistente al momento del query (por eso es missing index) y cuando ejecutemos algunas de estas vistas dinámicas nos dará dicha información.

Como descubrir Índices faltantes sys.dm_db_missing_index_group_stats Regresa información acerca de grupos de índices no existentes, por ejemplo, la performance que se podría obtener implementando un grupo específico de índices. ys.dm_db_missing_index_groups Regresar información acerca de un grupo específico de indices no declarados, como el identificador de grupo y el identificador de todos los índices que están contenidos en dicho grupo.

Como descubrir Índices faltantes sys.dm_db_missing_index_details devuelve información detallada acerca de un posible índice a ser creado, por ejemplo nombre e identificador de la tabla donde el índice podría ser creado y las columnas y tipos que conformarían dicho índice.

Como descubrir Índices faltantes sys.dm_db_missing_index_columns Devuelve info acerca de los campos que podrían conformar un índice.that are missing an index.