Sunteți pe pagina 1din 8

FACULTAD DE PRODUCCION Y SERVICIOS

Escuela Profesional de Ingeniera de Sistemas


Base de Datos II Pgina: 1/8 Fecha: Semestre Grupo Ciclo Acd. 2011-2 VII

Sesin Nro. 06
Tema: ndices

Parte II
Docentes: Ms.Cs. Karim Guevara Puente de la Vega Ing. Freddy Gonzales Saji

I OBJETIVOS
Crear ndices y vistas indizadas con caractersticas de unicidad o composicin. Describir cmo mantener ndices a lo largo del tiempo.

II REQUISITOS
Tener instalado SQL Server 2005 o 2008

III MARCO TERICO Y PROCEDIMIENTO


Al programar una base de datos, la mayora de veces se requerir crear ndices tiles que nos permitan obtener un rpido acceso a los datos. Con Microsoft Windows 2000, puede crear y mantener ndices y estadsticas. Creacin de ndices La instruccin CREATE INDEX permite crear ndices. Tambin puede usar el Asistente para creacin de ndices del Administrador corporativo de SQL Server. Para crear un ndice basado en una o varias columnas de una tabla debe de tener en cuenta lo siguiente: SQL Server crea ndices automticamente cuando se crea una restriccin PRIMARY KEY o UNIQUE en una tabla. Es posible crear ndices en las vistas. Antes de crear un ndice basado en una columna, determine qu ndices hay ya basados en ella. Sintaxis:

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX nombrendice ON { tabla | vista } ( columna [ ASC | DESC ] [ ,...n ] ) [ON grupoDeArchivos ]

Ejemplo:
CREATE CLUSTERED INDEX CL_lastname ON employees(lastname)

FACULTAD DE PRODUCCION Y SERVICIOS

Escuela Profesional de Ingeniera de Sistemas


Base de Datos II
Eliminacin de ndices

Pgina: 2/8

La instruccin DROP INDEX permite quitar un ndice de una tabla. Al quitar un ndice, tenga en cuenta los siguientes hechos: No es posible utilizar la instruccin DROP INDEX con ndices creados con la restriccin PRIMARY KEY o UNIQUE. Sintaxis:

DROP INDEX 'tabla.ndice | vista.ndice' [, ...n ]


Ejemplo:
USE Northwind DROP INDEX employees.CL_lastname

1. ndices nicos
Un ndice nico asegura que todos los datos de una columna indizada sean nicos y que no haya valores duplicados. Puede ser agrupado o no agrupado. Tener en cuenta que: Si una tabla contiene datos, SQL Server comprueba si hay valores duplicados al crear el ndice. SQL Server comprueba si hay valores duplicados cada vez que se utiliza la instruccin INSERT o UPDATE. Si hay valores de clave duplicados, SQL Server cancela la instruccin y genera un mensaje de error con el primer duplicado. Ejemplo:
USE Northwind CREATE UNIQUE NONCLUSTERED INDEX U_CustID ON customers(CustomerID)

Bsqueda de todos los valores duplicados de una columna Si en el momento de crear un ndice nico ya hay valores de clave duplicados, la instruccin CREATE INDEX produce un error. Puede usar la secuencia de comandos siguiente en cualquier tabla para buscar todos los valores duplicados de una columna:
SELECT index_col, COUNT (index_col) FROM tablename GROUP BY index_col HAVING COUNT(index_col)>1 ORDER BY index_col

Ejemplo:
SELECT CustomerID, COUNT(CustomerID) AS '# of Duplicates' FROM Northwind.dbo.Customers GROUP BY CustomerID HAVING COUNT(CustomerID)>1 ORDER BY CustomerID

2. ndices compuestos
Los ndices compuestos especifican ms de una columna como valor de clave. Puede crear ndices compuestos:

FACULTAD DE PRODUCCION Y SERVICIOS

Escuela Profesional de Ingeniera de Sistemas


Base de Datos II
Cuando resulte mejor buscar claves formadas por dos o ms columnas. Si las consultas slo hacen referencia a las columnas del ndice.

Pgina: 3/8

Al crear un ndice compuesto, tenga en cuenta los siguientes hechos:

Es posible combinar hasta 16 columnas en un mismo ndice compuesto. Todas las columnas de un ndice compuesto deben proceder de la misma tabla, excepto cuando el ndice se crea en una vista. Defina en primer lugar la columna con mayor unicidad. La primera columna definida en la instruccin CREATE INDEX se conoce como columna de orden superior. La clusula WHERE de una consulta debe hacer referencia a la primera columna del ndice compuesto para que el optimizador de consultas lo utilice. Un ndice basado en (columna1, columna2) no es igual a uno basado en (columna2, columna1): cada uno tiene un orden de columnas distinto. La columna que contenga datos ms selectivos o que devuelva el menor porcentaje de filas determina, a menudo, el orden de las columnas. Los ndices compuestos son tiles para las tablas con claves de varias columnas.

Ejemplo:
USE Northwind CREATE UNIQUE NONCLUSTERED INDEX U_OrdID_ProdID ON [Order Details] (OrderID, ProductID)

3. Informacin de los ndices


Para obtener informacin de los ndices existentes, se puede utilizar el Administrador corporativo de SQL Server o ejecutar el procedimiento almacenado sp_helpindex Ejemplo:
USE Northwind EXEC sp_helpindex Customers

Tambin se puede utilizar el procedimiento almacenado de sistema sp_help nombreTabla.

4. Opciones de creacin de ndices


Opcin FILLFACTOR Esta opcin permite optimizar el rendimiento de las instrucciones INSERT y UPDATE en las tablas que contienen ndices agrupados o no agrupados. El valor de FILLFACTOR que se debe especificar en una tabla depende de la frecuencia con que se modifiquen los datos (instrucciones INSERT y UPDATE) y del entorno de la organizacin. En general, debe hacer lo siguiente:

Utilice un valor de FILLFACTOR pequeo en los entornos de proceso de transacciones en lnea (OLTP). Utilice un valor de FILLFACTOR grande en los entornos de Analysis Services de SQL Server.

FACULTAD DE PRODUCCION Y SERVICIOS

Escuela Profesional de Ingeniera de Sistemas


Base de Datos II Pgina: 4/8

La tabla siguiente muestra los valores de la opcin FILLFACTOR y los entornos en que se utilizan habitualmente.

Porcentaje de FILLFACTOR O (predeterm.) 1-99

Pginas del nivel de hoja Rellenar completamente Rellenar hasta el porcentaje especificado Rellenar completamente

Pginas de niveles distintos del de hoja Dejar sino para una entrada de ndice Dejar sitio para una entrada de ndice Dejar sitio para una entrada de ndice

Actividad en los valores de clave Sin modificacin o modificaciones leves Modificaciones de moderadas a frecuentes Sin modificacin o modificaciones leves

Entorno de trabajo habitual Analysis Services Mixto u OLTP

100

Analysis Services

Opcin PAD_INDEX

La opcin PAD_INDEX especifica el porcentaje con que se deben llenar las pginas de ndice no situadas en el nivel de hoja.
USE Northwind CREATE INDEX OrderID_ind ON Orders(OrderID) WITH PAD_INDEX, FILLFACTOR=70

Ejemplo:

5. Mantenimiento de ndices
Instruccin DBCC SHOWCONTIG Muestra informacin acerca de la fragmentacin de los datos e ndices de una tabla especfica. Al ejecutarla, SQL Server recorre las pginas de ndices del nivel de hoja para determinar si una tabla o un ndice especficos estn muy fragmentados. Tambin determina si las pginas de datos o de ndices estn llenas.

FACULTAD DE PRODUCCION Y SERVICIOS

Escuela Profesional de Ingeniera de Sistemas


Base de Datos II Pgina: 5/8

En la tabla siguiente se describen las estadsticas que devuelve la instruccin DBCC SHOWCONTIG. Ejemplo:.
USE Northwind DBCC SHOWCONTIG (Customers, PK_Customers)

Resultados:

DBCC SHOWCONTIG recorriendo la tabla 'Customers'... Tabla: 'Customers' (2073058421); Id. de ndice: 1, Id. de base de datos: 6 Realizado recorrido de nivel TABLE. Pginas recorridas: 3 Extensiones recorridas: 2 Cambios de extensin: 1 Promedio de pginas por extensin: 1.5 Densidad de recorrido [Cuenta 50.00% [1:2] ptima:Cuenta real]: Fragmentacin del recorrido lgico: 0.00% Fragmentacin de recorrido de 50.00% extensin: Promedio de bytes libres por 246.7 pgina: Promedio de densidad de pgina 96.95% (completa): Ejecucin de DBCC completada. Si hay mensajes de error, consulte al administrador del sistema.
Instruccin DBCC INDEXDEFRAG Permite desfragmentar el nivel de hoja de ndices agrupados y no agrupados basados en tablas y vistas. Ejemplo:

DBCC INDEXDEFRAG(credit, member, mem_no_CL)

Resultado:

Pages scanned 150 (1 filas afectadas)

Pages moved 28

Pages removed 9

IV PROCEDIMIENTO
Antes de empezar a desarrollar su practica debe de seguir las instrucciones del docente a cargo:

FACULTAD DE PRODUCCION Y SERVICIOS

Escuela Profesional de Ingeniera de Sistemas


Base de Datos II Pgina: 6/8

El archivo indicado por el docente contiene los archivos de comandos necesarios para la realizacin de la prctica. Para la realizacin de las prcticas es necesario ejecutar algunos script que le indique su profesor, para la restauracin de las Bases de Datos ClassNortwind y Credit. Creacin de ndices 01. Abra el Analizador de consultas SQL y, si as se le pide, inicie una sesin en el servidor local con autenticacin de Microsoft Windows 02. En la lista BD, haga clic en ClassNorthwind. 03. Abra el archivo de comandos CreaIndx1.sql. 04. Revise la instruccin CREATE INDEX. 05. Qu realiza la secuencia de comandos? 06. Ejecute el archivo de comandos. 07. Compruebe que se ha creado el ndice Orders_Customers_link; para ello, utilice el procedimiento almacenado del sistema sp_help 08. Escriba y ejecute una secuencia de comandos que cree los ndices siguientes en la BD ClassNorthwind:

Tipo de ndice Agrupado No agrupado

Nombre

Tabla

Columna CategoryID SupplierID

Products_CategoryID_link Products Products_SupplierID_link Products

Valor de Fillfactor 0 0

09. Consulte la vista del sistema sysindexes para comprobar que se han creado los ndices. 10. Ejecute el procedimiento almacenado del sistema sp_helpindex con la tabla Orders. Cul es el resultado? 11. Ejecute el procedimiento almacenado del sistema sp_helpindex con la tabla Products. Por qu hay ndices en las columnas de clave externa? 12. Por qu ninguno de los ndices es exclusivo? Examen de las estructuras de ndices

Para observar la estructura inicial de la tabla 13. Abra, revise y ejecute el archivo index_cleaup.sql 14. Escriba y ejecute estas instrucciones de forma individual para obtener informacin acerca de la tabla Member: USE credit GO EXEC sp_spaceused member SELECT * FROM sysindexes WHERE id = OBJECT_ID('member') DBCC SHOWCONTIG ('member')

FACULTAD DE PRODUCCION Y SERVICIOS

Escuela Profesional de Ingeniera de Sistemas


Base de Datos II
15. Registre la informacin estadstica de la tabla siguiente.

Pgina: 7/8

Para crear un ndice agrupado 16. Escriba y ejecute esta instruccin para crear un ndice agrupado nico con la columna member_no de la tabla Member, sin especificar un valor de FILLFACTOR: 17. Escriba y ejecute la instruccin siguiente para obtener informacin acerca de la tabla Member:

USE credit SELECT * FROM sysindexes WHERE id = OBJECT_ID('member') DBCC SHOWCONTIG ('member')
18. Registre la informacin estadstica de la tabla siguiente.

19. An estn llenas las pginas?

FACULTAD DE PRODUCCION Y SERVICIOS

Escuela Profesional de Ingeniera de Sistemas


Base de Datos II Pgina: 8/8

20. Sigue siendo la tabla contigua? 21. La creacin de un ndice agrupado hace ms compactas las pginas de datos? Razone la respuesta.

Para crear un ndice no agrupado 22. Escriba y ejecute esta instruccin para eliminar el ndice creado anteriormente:

USE credit EXEC index_cleanup member


23. Escriba y ejecute esta instruccin para crear un ndice no agrupado con la columna firstname de la tabla Member, sin especificar un valor de FILLFACTOR: 24. Escriba y ejecute esta instruccin SELECT que devuelve las filas de sysindexes de la tabla Member: 25. Registre la informacin estadstica de la tabla siguiente.

Para crear un ndice no agrupado con un valor de FILLFACTOR 26. Escriba y ejecute esta instruccin para eliminar el ndice no agrupado de la tabla Member: 27. Escriba y ejecute esta instruccin para crear el mismo ndice, pero ahora con un valor de FILLFACTOR del 25 por ciento: 28. Escriba y ejecute esta instruccin SELECT que devuelve las filas de sysindexes de la tabla Member: 29. Registre la informacin estadstica de la tabla siguiente.

30. Es proporcional el aumento del tamao del nivel de hoja al valor de FILLFACTOR? 31. Cmo se puede determinar si el aumento del tamao del nivel de hoja es proporcional al valor de FILLFACTOR del 25 por ciento?

S-ar putea să vă placă și