Documente Academic
Documente Profesional
Documente Cultură
Requisitos previos
El archivo lab075.zip contiene los archivos de comandos necesarios para la realizacin de la prctica, as como las correspondientes soluciones. Para la realizacin de las prcticas es necesario ejecutar el script Restore.cmd del directorio Restore.
El resultado del procedimiento almacenado del sistema sp_help muestra que existe el ndice no agrupado Orders_Customers_link, basado en la columna CustomerID de la tabla Orders.
Para crear ndices basados en claves externas referidas a la tabla Products En este procedimiento crear ndices agrupados y no agrupados para todas las referencias de clave externa a la tabla Products. Para ello, utilizar la informacin que se detalla. Puede usar el Asistente para creacin de ndices desde el Administrador corporativo de SQL Server o escribir una instruccin de Transact-SQL en el Analizador de consultas SQL. El archivo Soluciones\CreaIndx2.sql es la secuencia de comandos completa para este procedimiento. 1. Compruebe que est usando la base de datos ClassNorthwind. 2. Escriba y ejecute una secuencia de comandos que cree los ndices siguientes.
Tipo de ndice Nombre Agrupado No agrupado Tabla Columna CategoryID SupplierID Valor de Fillfactor 0 0
CREATE CLUSTERED INDEX Products_CategoryID_link ON Products(CategoryID) CREATE NONCLUSTERED INDEX Products_SupplierID_link ON Products(SupplierID)
3. Consulte la tabla del sistema sysindexes para comprobar que se han creado los ndices.
Para comprobar la existencia de los ndices creados En este procedimiento ejecutar instrucciones para comprobar que los ndices creados existen y son correctos. 1. Ejecute el procedimiento almacenado del sistema sp_helpindex con la tabla Orders. Cul es el resultado? Orders_Customers_link. ____________________________________________________________ ____________________________________________________________ 2. Ejecute el procedimiento almacenado del sistema sp_helpindex con la tabla Products. Por qu hay ndices en las columnas de clave externa? El ndice de clave externa no es imprescindible, pero es recomendable para asociar los miembros de la clave externa con la clave principal. ____________________________________________________________ ____________________________________________________________ Por qu ninguno de los ndices es exclusivo? Porque representan claves externas. A menudo, la relacin entre la clave principal y las claves externas es de uno a varios. Por ello, un mismo valor de la clave principal puede tener relacin con muchos valores de la misma clave en la columna de clave externa. ____________________________________________________________ ____________________________________________________________
Resultado 10.000 Ninguna. Una fila en sysindexes con un valor de 0 en indid representa la tabla propiamente dicha. 145 67
SHOWCONTIG: Pginas recorridas Calculo y redondeo de los resultados. (n de filas/ n de pginas) = n de filas por pgina
SHOWCONTIG: Cambios de extensin SHOWCONTIG: Promedio de pginas por extensin SHOWCONTIG: Promedio de densidad de pgina (completa)
18 7,6 98,82%
Para crear un ndice agrupado En este procedimiento crear un ndice agrupado nico y observar los cambios en la estructura de la tabla. Tambin obtendr informacin acerca de la estructura del ndice. 1. 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:
USE credit CREATE UNIQUE CLUSTERED INDEX mem_no_CL ON member (member_no)
2. 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')
Informacin Nmero de pginas del ndice agrupado Nmero de pginas de datos en el ndice agrupado. Nmero de pginas sin datos en el ndice agrupado. Nmero de ndices
Origen fila de sysindexes: used fila de sysindexes: dpages (used dpages) SELECT * FROM sysindexes
Resultado 183 145 145 142 = 3 Uno. Una fila en sysindexes con un valor de 1 en indid representa el ndice agrupado. 145 71
SHOWCONTIG: Pginas recorridas Calculo y redondeo de los resultados. (n de filas/ n de pginas) = n de filas por pgina
SHOWCONTIG: Cambios de extensin SHOWCONTIG: Promedio de pginas por extensin SHOWCONTIG: Promedio de densidad de pgina (completa)
18 7,6 98,82
An estn llenas las pginas? S. ____________________________________________________________ ____________________________________________________________ Sigue siendo la tabla contigua? S. ____________________________________________________________ ____________________________________________________________ La creacin de un ndice agrupado hace ms compactas las pginas de datos? Razone la respuesta. No siempre. Depende de la naturaleza de los datos. Las pginas se pueden compactar si la tabla est fragmentada debido a las actualizaciones del valor de clave o las eliminaciones e inserciones desordenadas. Si las pginas ya estn compactadas, la creacin de un ndice agrupado no tendr ningn efecto. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ Para crear un ndice no agrupado En este procedimiento crear un ndice no agrupado nico y obtendr informacin acerca de la estructura del ndice. 1. Escriba y ejecute esta instruccin para eliminar el ndice creado anteriormente:
USE credit EXEC index_cleanup member
2. 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:
USE credit CREATE NONCLUSTERED INDEX indx_fname ON member(firstname)
3. Escriba y ejecute esta instruccin SELECT que devuelve las filas de sysindexes de la tabla Member:
USE credit SELECT * FROM sysindexes WHERE id = OBJECT_ID('member')
Informacin Nmero de pginas del ndice no agrupado en la columna firstname Nmero de pginas en el nivel de hoja Nmero aproximado de filas por pgina de hoja
Origen fila de sysindexes: used fila de sysindexes: dpages (n de filas en la tabla/n de pginas de nivel de hoja)
Para crear un ndice no agrupado con un valor de FILLFACTOR En este procedimiento crear un ndice no agrupado y observar los cambios en la estructura de la tabla. 1. Escriba y ejecute esta instruccin para eliminar el ndice no agrupado de la tabla Member:
USE credit EXEC index_cleanup member
2. Escriba y ejecute esta instruccin para crear el mismo ndice, pero ahora con un valor de FILLFACTOR del 25 por ciento:
USE credit CREATE NONCLUSTERED INDEX indx_fname ON member(firstname) WITH FILLFACTOR=25
3. Escriba y ejecute esta instruccin SELECT que devuelve las filas de sysindexes de la tabla Member:
USE credit SELECT * FROM sysindexes WHERE id = OBJECT_ID('member')
Informacin Nmero de pginas en este ndice Nmero de pginas en el nivel de hoja. Nmero aproximado de filas por pgina de hoja
Origen fila de sysindexes: used fila de sysindexes: dpages (n de filas en la tabla/n de pginas de nivel de hoja)
Es proporcional el aumento del tamao del nivel de hoja al valor de FILLFACTOR? S. _____________________________________________________________ Cmo se puede determinar si el aumento del tamao del nivel de hoja es proporcional al valor de FILLFACTOR del 25 por ciento? Con un valor de FILLFACTOR de 0 (predeterminado), pueden caber 303 filas en cada pgina de nivel de hoja. Multiplique 303 por el 25 por ciento y el resultado es 76 filas. ste es el nmero de filas que cabrn en una pgina de nivel de hoja que slo est llena un 25 por ciento. ____________________________________________________________ ____________________________________________________________